加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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)
      ... 
}

哪一个例外:
无法找到指令’list’所要求的Controller’parent’
原因很明显 – $ compile函数没有提供控制器,因此“parent”的要求无法解决。
所以我试过手动提供控制器:

$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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读