2015-08-27 37 views
2

我有一個指令,需要一個父級formController。 該指令適用於位於手風琴標題內的輸入元素(使用angular ui bootstrap),並且無法找到父級formController。 但是,如果相同的元素放置在手風琴的內容部分,則可以訪問父級formController。在手風琴中需要父指令 - 從ui引導標題

我做了一個示例plunkr顯示問題。 有2個需要formController的指令formid的輸入字段。 class =「working」的人可以獲得父控制器,而class =「notworking」的人不能獲得父控制器,而angularjs顯示錯誤。

http://plnkr.co/edit/azZY0rndzFUhnanjeGuq

<body ng-controller="MainCtrl"> 
<form name="myForm"> 
    <accordion class="claimheads"> 
    <accordion-group> 
    <accordion-heading><input class="notworking" type="text" formid=""></input></accordion-heading> 
      <div class="working" ng-include="'temp.html'"></div> 
     </accordion-group> 
     </accordion> 
</form> 

任何人都可以請幫助我理解這一點。謝謝。

回答

0

我認爲問題在於手風琴標題指令使用了變形。 (見here

您可以通過它的名字在作用域層級訪問的形式控制:

app.directive('formid',function(){ 
    return { 
     // restrict to attribute 
     restrict: 'A', 
     require: "?^form", 
     link: function(scope, $element, $attrs, reqattrs) { 

     console.log("requested:"); 
     console.log(reqattrs);; 

     console.log("by name:"); 
     console.log(scope.$parent.$parent.myForm); 

     } 
    } 
}) 

但是,這是某種形式的黑客攻擊的。我相信有更好的解決方案。

+0

是啊,即使我想到了這個黑客。我需要一個通用的解決方案,因爲該指令將在很多地方使用。我只需要表單名稱。如何使用指令中的jqLit​​e或jQuery來瀏覽DOM樹以獲取表單名稱?你對此有何看法?再次不是正確的方式。但可能適用於所有情況。 –