2014-04-04 144 views
0

我在我的範圍內有一個頁面和一個模型$scope.model = { ... }; 我將頁面上的值與模型上的值很好地綁定在一起。我有一個地址嵌套在該模型的某個地方,因爲這個例子可以說可以說我可以隔離div的範圍嗎?

$ scope.model = {visited:[{...},。 ..]}, ...],...};

我需要寫一個div中某個地方的首次訪問首地址的所有信息。我知道我可以輸入像這樣的所有字段model.visits[0].addresses[0].Zip等,但有像在我需要輸出model.visits[0].addresses[0] 5場。我想,最容易的方法是什麼?我考慮把

<div ng-init="a = model.visits[0].addresses[0]">{{a.Zip}}...</div> 

然後只是像訪問那樣的所有屬性。我真正想要的是,除非我可以將a的範圍縮小到只有一個div,否則不要在名爲a的作用域上創建新屬性。

這是可能的嗎?

說明:我知道我可以重做我的模型,或者將模型本身的數據移動,但這只是我多次碰到的東西,我真的很想知道是否有解決方案像這樣的問題。

+0

最好創建一個地址指令。 –

回答

2

你可以創建一個用於創建你想要的元素的新範圍很小的指令:

... 
angular.module('yourApp').directive('newScope', function() { 
    return {scope: true}; 
}); 

然後你可以使用它像這樣:

<div ng-init="tmp=model.visits[0].addresses[0]" new-scope>{{tmp.Zip}}...</div> 

現在,tmp屬性將是附加到由newScope指令創建的新範圍,並且不會影響父範圍。

另外,參見short demo

+0

很好的答案,我也喜歡小提琴 –