如何解析foo.callbacke
以指向timerController.callbacke
方法?
<div ng-app="timerApp" ng-controller="timerController as foo">
<div ng-repeat="item in [1,2,3,4]">
<div watcher="{'seconds': 'foo.callbacke'}">
{{seconds}}
</div>
</div>
如果您愿意:http://jsfiddle.net/e86e05a1/(打开控制台)
答案 0 :(得分:1)
你可以在你的指令scope
中使用,这就是为什么指令可以通过$ scope自己访问控制器方法,所以这里不需要传递controllerAs
别名。这里只传递方法名称。而不是通过索引编辑来访问函数,请尝试在$eval
上使用scope
。
注意强>
除非您对属性进行插值,否则应使用$ observe 比如
{{something}}
<强>标记强>
<div watcher="{'seconds': 'callbacke'}">
<强>代码强>
angular.forEach(new_watchers, function(callback, k) {
watchers.push($scope.$watch(k, function() {
return $scope.$eval(callback)($scope, $element);
}));
});
答案 1 :(得分:0)
您不能以这种方式将函数引用传递给指令。你可以做什么在指令中创建一个独立的范围,并使用=
将父控制器的函数映射到指令范围。试试这个。
<强> HTML 强>
<div callbacke="callbacke" watcher>
{{seconds}}
</div>
<强> JS 强>
.directive('watcher', ['$compile', '$parse', function($compile, $parse) {
'use strict';
return {
restrict: 'A',
transclude: false,
scope: {
callbacke: '='
},
controller: ['$scope', '$element', '$attrs', function($scope, $element, attrs) {
var watchers = [];
console.log($scope.callbacke);
...
...
}]
...
...
};
}]);