angularjs – Angular $编译与所需的控制器
发布时间:2020-12-17 08:06:33 所属栏目:安全 来源:网络整理
导读:我有一个复合列表指令 – 这是一个列表项,它可以是一个列表。 父指令定义控制器: .directive('parent',function() { controller: function($scope) { },link: function (scope,element,attrs) { }}) 列表(项目)要求父控制器本身工作正常(为什么不应该..):
我有一个复合列表指令 – 这是一个列表项,它可以是一个列表。
父指令定义控制器: .directive('parent',function() { controller: function($scope) { },link: function (scope,element,attrs) { } }) 列表(项目)要求父控制器本身工作正常(为什么不应该..): .directive('list',function() { require: '^parent',attrs,parentCtrl) { } }) 对于具体项目也是一样,这也是一样的: .directive('item',function() { require: '^parent',parentCtrl) { } }) 一个项目可能是一个组合,在这种情况下,它自己创建一个“列表”。这个组合是通过$ compile(ing)链接函数中的列表项来完成的: link: function (scope,parentCtrl) { ... $compile("<list></list>")(scope) ... } 哪一个例外: $compile("<list></list>")(scope,null,{'parent': parentCtrl}); 哪些不会引发异常,但是在需要时仍然不提供此控制器。 任何想法如何使$ compile函数接受一个外部控制器,应该被评估?
我刚刚有一个类似的问题,解决方案似乎是首先将元素添加到父代,然后编译它。
.directive('item',function($compile) { return { template:'<li><a ng-click="addSubList()">Create Another List</a></li>',require: '^parent',replace: true,link: function(scope,parentCtrl) { scope.addSubList = function() { var sublist = angular.element('<ul list>'); element.find('a').append(sublist); $compile(sublist)(scope); }; } }; }); 看到这个Plunker:http://plnkr.co/edit/dASASrFbtXSMCRZKRAj5?p=preview (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |