2015-04-23 21 views
1

获得一个错误指令,同时从指令itemCounter试图require指令msgpallete
我已经删除了一些我认为在这种情况下不相关的函数的代码。
不要问任何你认为重要的代码。所以可能会有很多误解。
不能要求从另一个指令在angularJS

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片断提前

+1

如[每文档】(https://docs.angularjs.org/api/ng/service/$compile)'require'只能引用*兄弟*相同的元件上(指令 - 也许这是如果混淆来自)或* parent *。 –

+1

@ YD1m:你认真吗?如果我的'msgpallette'在页面的顶部并且'item-counter'需要在最下面。那我怎么能这样窝呢? – dreamer

+0

@PavelHoral:你将能够回答我的以上评论 – dreamer

回答

1

require:'^msgpallete'

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>" 
} 
}); 

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

  1. someDirective:要求someDirective相同的元素,并将其传递给 链接功能
  2. someDirective:传递someDirective控制器如果有相同的元素,以链接功能。如果不是,则传递null。
  3. ^someDirective:需要父元素之一的someDirective并将其传递给链接函数。
  4. ?someDirective:传递someDirective控制器(如果其中一个父元素可用于链接功能)。如果不是,则传递null。

由于我已经完成了这一点,并且您要求的指令可能需要明确定义控制器,这已经有一段时间了。只需定义并返回一个空的控制器就足够了。

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

nope.that不会工作,仍然会得到错误'Controller 'msgpallete',指令'itemCounter'需要找不到!' – dreamer

+0

您是否还定义并返回了'msgpallete'的控制器? – Enzey

+0

没有添加'控制器'也没有帮助 – dreamer

相关问题