【发布时间】:2015-05-20 14:18:03
【问题描述】:
使用 AngularJS,假设数组 $scope.data.children 具有以下结构的项:
{
"sku" : "<sku>",
"selected" : <boolean>,
"children" : []
}
是否有一种简单的方法可以引用所有 selected = true 子级,最好以 $scope.data.components 表示?
例如,如果
[
{"sku" : "A","selected" : true, "children":[
{"sku" : "A1","selected" : true, "children":[]},
{"sku" : "A2","selected" : false, "children":[]}
]},
{"sku" : "B","selected" : false, "children":[
{"sku" : "B1","selected" : false, "children":[]},
{"sku" : "B2","selected" : false, "children":[]}
]},
{"sku" : "C","selected" : true, "children":[
{"sku" : "C1","selected" : true, "children":[]},
{"sku" : "C2","selected" : false, "children":[]}
]},
{"sku" : "D","selected" : false, "children":[
{"sku" : "D1","selected" : false, "children":[]},
{"sku" : "D2","selected" : false, "children":[]}
]}
]
然后
$scope.data.components = [
{"sku" : "A","selected" : true, "children":[
{"sku" : "A1","selected" : true, "children":[]},
},
{"sku" : "C","selected" : true, "children":[
{"sku" : "C1","selected" : true, "children":[]}
}
]
如果$scope.data.children 更新为[{"sku" : "D","selected" : true}]
然后$scope.data.components =
[
{"sku" : "A","selected" : true, "children":[
{"sku" : "A1","selected" : true, "children":[]},
},
{"sku" : "C","selected" : true, "children":[
{"sku" : "C1","selected" : true, "children":[]}
},
{"sku" : "D","selected" : true, "children":[
{"sku" : "D2","selected" : true, "children":[]}
}
]
总结一下需求:
- 实时视图 - 对
$scope.data.children或$scope.data.components的更改应立即反映在两者上。 -
children元素的任何深度都应检查selected == true - 一旦检测到错误,就不应检查子子项。
- (可选,但如果可能的话最好)任何对
component的引用将只显示children和selected == true。因此,如果在node处可以使用对"sku":"A"对象的引用,那么node.components将返回node.children其中"sku":"A"的孩子的select == true
【问题讨论】:
标签: javascript angularjs data-binding