2012-11-22 60 views
1

我有具有以下基本結構圖的angularjs網絡應用:AngularJS:指令嵌套在NG-重複

<ul> 
    <li ng-repeat="entry in entries" ng-switch on="entry.type" logic-options > 
     <div ng-switch-when=1 text-entry></div> 
     <div ng-switch-when=2 other-entry></div> 
    </li> 
</ul> 

這裏文本輸入等進入的是具有有自己的模板指令邏輯選項是另一個有模板和控制器的指令。

邏輯的選項指令規定由子女範圍內使用某些功能,並具有替代:false,所以它應該它的模板追加到裏結束。文本輸入和其他輸入指令只是有一些要插入的模板,這些模板也用於其他視圖。

當我運行這個邏輯的選項指令將渲染和似乎功能,但內部指令(文本輸入和其它輸入)不會。

在控制檯中我得到的錯誤:

Error: Argument '?' is required [email protected] 

是什麼原因導致這個錯誤,我該如何改正呢?

小提琴證明這個問題:http://jsfiddle.net/cubicleWar/c3mTT/1/

+1

你有一個plnkr或複製這一問題的小提琴? –

+0

不,問題來自更大的代碼庫。我會盡量分解成一些更便於管理剪切代碼並創建一個小提琴 – cubiclewar

回答

2

我相信你應該transcluding孩子elems的,你也可能希望避免 把「NG-開關」指令在不同的層,所以它不會衝突與 其他指令。

app.directive('logicOption', function() { 
    return { 
    replace: false, 
    transclude: true, 
    template: "<div ng-transclude>{{entry.type}} : This is the logic stuff</div>" 
    };  
}); 

http://jsfiddle.net/YusCU/

+0

看來,你必須把開關置於另一層或將無法正常工作。 – cubiclewar