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

angularjs – 注入解析为指令控制器

发布时间:2020-12-17 07:34:16 所属栏目:安全 来源:网络整理
导读:我正在使用AngularUI路由器(0.2.13)并且具有这样定义的状态 .state('foo',{ template:'div some-directive/div',resolve:{ foo:function(SomeService){ return SomeService.something().promise; } }) 和这样的指令: app.directive('someDirective',functio
我正在使用AngularUI路由器(0.2.13)并且具有这样定义的状态
.state('foo',{ 
           template:'<div some-directive></div>',resolve:{
               foo:function(SomeService){
                   return SomeService.something().promise;
               }
           })

和这样的指令:

app.directive('someDirective',function(){
     return {
         controller: function(data) {
           // I want `data` to be injected from the resolve... 
           // as it would if this was a "standalone" controller
         }
     }
})

但这不起作用 – 数据参数导致UnknownProvider错误.独立定义指令控制器并在指令中按名称设置它具有相同的结果.

我或多或少知道为什么会这样,但有两个问题:

>有没有办法做我想做的事情?
>我应该尝试这样做,还是我在这里进入反模式?

你不能在指令中使用resolve,但是你可以将在状态中解析的结果传递给我认为可以完成你正在寻找的指令.

您需要更新状态定义以包含控制器并在指令上设置参数:

.state('foo',{ 
   template:'Test<div some-directive something="foo"></div>',url: 'foo',resolve:{
       foo:function(SomeService){
           return SomeService.something();
       }
   },controller: function($scope,foo){
     $scope.foo = foo;
   }
})

然后更新指令以使用此参数:

.directive('someDirective',function(){
     return {
         controller: function($scope) {
           // I want `data` to be injected from the resolve... 
           // as it would if this was a "standalone" controller
           console.log('$scope.something: '+ $scope.something);
         },scope: {
           something: '='
         }
     };
})

这是一个样本plunker:http://plnkr.co/edit/TOPMLUXc7GhXTeYL0IFj?p=preview

(编辑:李大同)

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

    推荐文章
      热点阅读