2016-07-15 22 views
1

我有一個使用父範圍的簡單指令。但是我無法訪問該指令的範圍。我究竟做錯了什麼?

<p>myFrm2.$name: {{myFrm2.$name}}</p> 

<pane> 
    <form name="myFrm2" id="myFrm2"> 
    <input type="text" ng-model="fld2"> 
    </form> 
</pane> 

https://plnkr.co/edit/AIUK2tBiiVs21so2k5JR?p=preview

這是指令:

.directive('pane', function() { 
     return { 
      restrict: 'E', 
      transclude: true, 
      scope: false, 
      template: '<div style="border: 1px solid black;">' + 
      '<div style="background-color: gray; color:white">Test Directive</div>' + 
      '<ng-transclude></ng-transclude>' + 
      '</div>' 
     }; 
     }) 

正如我設置$範圍:在我的指令錯誤,我會假設範圍的指令與其父之間共享範圍。

回答

1

當您使用對象模型或控制器別名時,問題消失。

與對象實例

在控制器

$scope.forms ={}; 

鑑於

<p>myFrm2.$name: {{forms.myFrm2.$name}}</p> 

<pane> 
    <form name="forms.myFrm2" id="myFrm2"> 
    <input type="text" ng-model="fld2"> 
    </form> 
</pane> 

注意,你應該總是在ng-model

DEMO使用對象

+0

謝謝。我也會用控制器A來嘗試它。 – Gerfried

+0

只使用controllerAs並不能幫助我 - 我錯過了什麼? https://plnkr.co/edit/Kpc13ckgWnJB2UTfm3BB?p=preview – Gerfried

+0

不會將所有變量作爲別名屬性的前綴,包括表單名稱https://plnkr.co/edit/I0OWmwJFZbGNg631pWyw?p=preview – charlietfl