我正在使用ui-bootstrap为我的指令添加模态,并在前一个指令上做得很好。我不相信我在这个方面做了不同的事情,但当我从内部运行 edit()函数时,我得到 ReferenceError:milestoneController未定义指令。
milestone.html (这是下面指令的模板HTML):
<div ng-controller = "milestoneController"></div>
里程碑指令:
angular.module('ireg').directive('milestone', function (milestoneFactory,$modal) {
return {
restrict:'E',
scope: {
objectid:'@objectid'
},
templateUrl: '/ireg/components/milestone/milestone.html',
link: function ($scope, element, attrs) {
$scope.edit = function(data) {
milestoneController.editMilestoneDialog(data);
};
}
}
});
angular.module('ireg').controller('milestoneController', function ($scope, $modal){
$scope.editMilestonesDialog = function (objectid) {
//fun
}
});
编辑:我也觉得我应该提一下里程碑指令在ng-repeat循环中重复。谢谢!
答案 0 :(得分:1)
好的,你想要在你的指令中使用一个transcluded范围来将控制器函数传递给指令。您的指令现在变为:
angular.module('ireg').directive('milestone', function (milestoneFactory,$modal) {
return {
restrict:'E',
scope: {
objectid:'@objectid',
editMilestoneDialog:'&'
},
templateUrl: '/ireg/components/milestone/milestone.html',
link: function ($scope, element, attrs) {
$scope.edit = function(data) {
$scope.editMilestoneDialog(data);
};
}
}
并且您的标记变为:
<milestone edit-milestone-dialog="editMilestoneDialog"></milestone>