我第一次试在安古拉杰。
我试图创建一个指令,在单击时调用在模型的控制器函数中声明的函数。
以下是我的简化代码:http://jsfiddle.net/vnj62xn8/
联署材料:
angular.module('tasks', [])
.controller('taskCtrl', function($scope){
$scope.complete = function(){
console.log('parent function');
}
})
.directive('taskList', function(){
return {
restrict: 'E',
scope: {
complete: '&'
},
template: '<button ng-click="complete()">Complete Task</button>',
controller: function($scope){
/*$scope.complete = function(){
console.log('child function');
}*/
}
}
});HTML:
<div ng-app="tasks">
<task-list></task-list>
</div>因此,我查看了其他Q/A,发现这似乎是最广义的解决方案,尽管它永远不会调用taskCtrl控制器中找到的完整()函数。但是,如果没有注释,它将从指令的控制器调用complete()函数。我遗漏了什么?
发布于 2014-10-28 18:25:30
您需要按以下方式编写html:
<div ng-controller="taskCtrl">
<task-list complete="complete()"></task-list>
</div>下面是指向更新的http://jsfiddle.net/paila/vnj62xn8/4/的链接
发布于 2014-10-28 18:35:16
只需将代码更改为:
.directive('taskList', function(){
return {
restrict: 'E',
scope: {
complete: '&'
},
template: '<button ng-click="complete()">Complete Task</button>',
controller: 'taskCtrl' // Here you are referencing the taskCtrl
}
});您只需在控制器分配中引用现有控制器即可。
https://stackoverflow.com/questions/26615612
复制相似问题