angularjs:replace属性如何适用于指令?

时间:2013-11-19 13:03:00

标签: javascript angularjs angularjs-directive

我试图找出'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属性,那么一切正常。

有人可以解释这种行为吗?

0 个答案:

没有答案