无法从angularJS中的另一个指令中获取指令

时间:2015-04-23 15:21:20

标签: angularjs angularjs-directive

指令 require尝试msgpallete 指令 itemCounter时出错。
我已经删除了一些我认为在这种情况下不相关的函数的代码 请问任何您认为重要的代码.Kinda new to angular。所以可能有很多误解。

HTML 代码段

<msgpallete msg="message"></msgpallete>
<li ng-repeat = "item in items">

<item-counter 
    startcounter = 1 
    resetter     = 'reset' 
    name         = {{item.name}} >
    {{item.name}}
</item-counter><br><br>
</li>   

JS 代码段

angular.module('myApp',[])
.controller('MainCtrl', function($scope, $timeout) {
  ....code irreleveant in this context....
})
.directive('msgpallete',function(){
 return{
    restrict:"E",
    scope:{},
    template:"<h4>Added"+""+" "+"</h4>"
  }
})   
.directive('itemCounter',function(){
return {    
    restrict:'E',
    require:'msgpallete',
    scope:{
      resetter:"="
    },
    transclude:true,
    link:function(scope,elem,attr){
        scope.qty = attr.startcounter
        scope.add = function(){}
        scope.remove = function(){}
        scope.reset = function(){}
        scope.$watch();
    },
    template:"<a ng-transclude></a> &nbsp"+
             "<button ng-click='remove();' >less</button>"+
             "{{qty}}" +
             "<button ng-click='add();'>more</button>&nbsp"+
             "<button ng-click='reset();'>submit</button>"
}
});

提前致谢

1 个答案:

答案 0 :(得分:1)

require:'^msgpallete'

require参数具有其他功能,如果您查看文档。

  1. someDirective:在同一元素上需要someDirective并将其传递给 链接功能
  2. ?someDirective:将someDirective控制器(如果在同一元素上可用)传递给链接功能。如果没有,请传递null。
  3. ^ someDirective:在其中一个父元素上需要someDirective并将其传递给链接函数。
  4. ?^ someDirective:如果某个父元素可用,则将someDirective控制器传递给链接函数。如果没有,请传递null。
  5. 自从我完成此操作已经有一段时间了,您需要的指令可能需要明确定义控制器。只需定义并返回一个空控制器即可。

    .directive('parent', function() {
        return: {
            controller: function() {return {}}
        }
    })