Более быстрые результаты могут быть достигнуты с помощью numpy.where .
Например, при настройке unubtu -
In [76]: df.iloc[np.where(df.A.values=='foo')]
Out[76]:
A B C D
0 foo one 0 0
2 foo two 2 4
4 foo two 4 8
6 foo one 6 12
7 foo three 7 14
Сроки сравнения:
In [68]: %timeit df.iloc[np.where(df.A.values=='foo')] # fastest
1000 loops, best of 3: 380 µs per loop
In [69]: %timeit df.loc[df['A'] == 'foo']
1000 loops, best of 3: 745 µs per loop
In [71]: %timeit df.loc[df['A'].isin(['foo'])]
1000 loops, best of 3: 562 µs per loop
In [72]: %timeit df[df.A=='foo']
1000 loops, best of 3: 796 µs per loop
In [74]: %timeit df.query('(A=="foo")') # slowest
1000 loops, best of 3: 1.71 ms per loop
$mgDialog
имеет изолированную область видимости, которая отличается от той, что указана в вашей директиве, вы можете попытаться отследить исходную область видимости и использовать ее в $mgDialog
controller
$scope.save = function(){
var outerScope = $scope;
$mdDialog.show({
templateUrl: '',
escapeToClose: true,
clickOutsideToClose: true,
controller: function($scope) {
$scope.teste = function(){
outerScope.callback();
}
}
})
}
или передать обратный вызов в качестве параметра
$scope.save = function(){
$mdDialog.show({
templateUrl: '',
escapeToClose: true,
clickOutsideToClose: true,
locals: {
callback: $scope.callback
},
controller: function($scope, callback) {
$scope.teste = function(){
callback();
}
}
})
}