我有一個項目列表,我已經通過ng-repeat
將它們呈現在模板中。它們中的每一個都受itemController
的控制,其暴露項目的一些行爲(例如,抓取焦點)。下面是HTML:訪問對應於模型變量的子範圍
<body ng-controller="mainController">
<button ng-click="addItem()">add</button>
<ul>
<li ng-repeat="item in items" ng-controller="itemController">
<div ng-if="item.isEditing">
<input ng-model="item.name"/>
<button ng-click="item.isEditing=false">done</button>
</div>
<span ng-if="!item.isEditing">{{item.name}}</span>
</li>
</ul>
</body>
在mainController
,我有加入新的項目,以項目一個功能。下面是mainController的代碼:
app.controller('mainController', function($scope){
$scope.items = [
{
name: "alireza"
},
{
name: "ali"
}
];
$scope.addItem = function(){
$scope.items.push({isEditing: true});
}
});
每當我將項目添加到items
陣列,對應li
元素被添加到視圖是通過itemController
一個實例控制,以及相應的模型是我剛剛添加的新項目(或者可能是itemController
的scope
,其中包含項目)。
問題:
當我加入一些項目items
,我只能訪問item
和最近創建的項目不是範圍。所以我不能在新項目的範圍上運行一些函數(如grabFocus)。 在我的設計中,它在語義上是錯的嗎?這個問題的典型方法是什麼?
Plunker鏈接
Here is the plunker link with related comments
謝謝你,但我認爲這是一種解決方法,而不是針對這些情況一個乾淨的解決方案。假設有一個更復雜的工作,而不是抓住焦點。我認爲這是'項目'的問題,不應該在外部控制器中處理。 – 2014-11-01 01:58:44