这是我的观点(html):
<my-directive collection="currentData"></my-directive>
这是数据结构:
$scope.currentData = [...
{
"name": "lala Page",
"icon": "icon-docs",
"sub_data": [
{
"name": "1-article",
"href": "/1-article",
"icon": "fa fa-pencil"
},
{
"name": "2-article",
"href": "/2-article",
"icon": "fa fa-pencil"
},
{
"name": "3-article",
"href": "/3-article",
"icon": "fa fa-pencil"
}
...
]...
}]
在my-directive中有bind-once元素(在sub_data上)。 如果all数组更改 - 视图已更改, 但是当我更改sub_data时,视图不会更新。 任何想法,如何使集合受到sub_data变化的影响?
(我确实希望尽可能少地使用观察者)
修改
添加my-directive代码:
angular.module('my_module',[]).directive('myDirective', function(){
return {
scope:{
collection: '='
},
replace: true,
template: ['<li my-directive-item ng-repeat="item in collection" raw-model="{{::item}}">',
'</li>'].join('')
};
});
我没有关于收藏的手表,只有上面的代码。我的意思是angular不会更新集合绑定,除非我更改数组本身,并且我希望它在更改集合中项目的子属性时更新视图。
答案 0 :(得分:0)
好的,我解决了。我并不为解决方案感到自豪,但它确实有效:
控制器内部:
$scope.updateArray = function() {
...
// Do stuff with tempData
...
// Trick for updating the view - because of the bind-once sub items
$scope.currentData = [];
$timeout(function(){
$scope.currentData = tempData;
}, 0);
};