这有效:
<div ng-controller="AppCtrl">
<div phone dial="callHome()"></div>
</div>
angular.module('myApp')
.controller('AppCtrl',function($scope){
$scope.callHome = function(){
alert('called.')
}
})
.directive('phone',function(){
return {
scope: {
dial: '&'
},
template: '<input type="button" ng-click="dial()" />'
}
})
但这不会奏效:
<div phone dial="callHome()"></div>
angular.module('myApp')
.directive('phone',function(){
return {
scope: {
dial: '&'
},
template: '<input type="button" ng-click="dial()" />',
controller: function($scope){
$scope.callHome = function(){
alert('called.')
}
}
}
})
为什么?
我想在没有父控制器的情况下使用指令中的方法,因此它将位于自己的隔离范围内。
答案 0 :(得分:0)
它正在父范围内搜索表达式。但是你没有父范围而是你有相同的范围。
angular.module('myApp')
.directive('phone',function(){
return {
scope: {
},
template: '<input type="button" ng-click="ctrl.callHome ()" />',
controller: function(){
this.callHome = function(){
alert('called.')
}
},
controllerAs: 'ctrl'
}
})
这应该有效。
答案 1 :(得分:0)
&
表达式,因此无法通过创建新作用域或隔离作用域来使用这些方法。
您必须使用父作用域来处理&
表达式。