我试图找出'replace'属性如何用于指令。我遇到一种情况,当它设置为true导致我的代码中断。
指令:
angular.module('cdt.dm.directives').directive('referenceFiles', [
function () {
return {
restrict: 'E',
templateUrl: 'app/dm/views/templates/referenceFiles/referenceFiles.html',
scope: {
job: '='
},
link: function (scope, element, attr) {
scope.deleteReferenceFile = function (id) {
scope.job.references.splice(id, 1);
}
}
}
}]);
referenceFiles.html模板:
<div class="grid-action-filter" popover-placement="left" popover-template="app/dm/views/templates/referenceFiles/simple.html">
<span class="badge" style="cursor:pointer" >{{job.references.length}} added</span>
popover指令使用的simple.html模板:
<span>{{job.references.length}} reference files</span>
<table ng-repeat="ref in job.references">
<tr>
<td>{{ref.name}}</td>
<td>
<button class="btn grid-button btn-danger" ng-click="deleteReferenceFile($index);"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
</table>
如果我在referenceFiles指令中将replace设置为true,则单击该按钮时将无法在作用域上找到deleteReferenceFile方法。相反,我必须这样称呼它:
$parent.$parent.$parent.$parent.deleteReferenceFile($index)
不用说,这很难看......
如果删除指令的replace属性,那么一切正常。
有人可以解释这种行为吗?