2013-03-12 83 views
2

在車把渲染嵌套的對象時,你可以改變目前的範圍,因此,如果你有一個對象:變化範圍在AngularJS

walrus: { 
    bubbles: 7, 
    zombies[ 
    {name: 'Jim', hobby: 'pinocle'}, 
    {name: 'Cassandra', hobby: 'privateering'}, 
    {name: 'Ke$ha', hobby: 'yelling'} 
    ], 
    address: { 
    city: 'Fresno', 
    state: 'CA' 
    } 
} 

然後我可以發送上下文模板像這樣:

<article class='walrus'> 
    <h2>I have {{ bubbles }} bubbles!</h2> 
    <ul> 
    {{#each zombies}} 
     <li>{{ name }} likes {{ hobby }} 
    {{/each }} 
    </ul> 
    <div class='address'> 
    {{#with address}} 
     <p>{{city}}, {{state}}</p> 
    {{/with}} 
    </div> 
</article> 

但棱角分明,如果設置了$ scope.walrus =海象,我結束了這一點:

<article class='walrus'> 
    <h2>I have {{ walrus.bubbles }} bubbles!</h2> 
    <ul> 
     <li ng-repeat="zombie in walrus.zombies">{{ zombie.name }} likes {{ zombie.hobby }} 
    </ul> 
    <div class='address'> 
    <p>{{walrus.address.city}}, {{walrus.address.state}}</p> 
    </div> 
</article> 

是否有WA是否讓Angular識別它的範圍,並且不需要額外的walrus.,zombie.或(最壞的)walrus.address.

+0

你的意思是你想使用不同範圍的相同模板嗎?你有什麼用例?我的第一個想法是指令或簡單地不同的路線,但我不知道這是你在找什麼:) – 2013-03-12 22:22:08

+0

我有一個類似於具有嵌套對象的示例對象的對象。如果我想擁有一個海象#表演視圖,那麼我需要渲染所有這些信息(所以不在另一個路徑上),但輸入嵌套對象會使我的視圖變得混亂!無可否認,這是一種風格的東西,但看看那種不必要的尷尬'.address p'! – Chris 2013-03-12 22:50:06

+0

容易將'clutter'移動到一個指令[plunker demo](http://plnkr.co/edit/3psx921S4AO7w6s2NboZ?p=preview) – charlietfl 2013-03-13 00:16:05

回答

2

有沒有辦法有角承認它是在什麼範圍,並且不需要額外的walrus.zombie.,或(最糟糕的)walrus.address.

我不知道有任何方法可以做到這一點。

+0

不幸的是,這似乎是正確的答案。我想我可以明確地創建一個子範圍,但這不會更清潔。 – Chris 2013-03-18 16:34:06

0

對於沒有嵌套「海象」你可以這樣做:

angular.extend($scope, $scope.walrus);

這將海象對象擴大$範圍,現在你可以使用{{氣泡}}模板!

我使用擴展,但我真的不知道這是否是正確的方式來做你想做的!