我有一个json数据结构为:
$scope.items = [{"Color" : "Red", "Size": "Small" }, { "Color" : "Orange" "Size": "Small"}, {"Color" : "Green" "Size": "Extra-Large"}];
然后我有一个属性json数据:
$scope.properties = [{"PropertyName" : "Color", "FilteredAs" : "AllColors"}, {"PropertyName" : "Size", "FilteredAs" : "AllSizes"}]
我正在进行服务器端过滤,这就是为什么我的属性json数据中有FilteredAs属性的原因。我想要发生的是:
if(items.key = properties.PropertyName) 例如:"颜色" (这是items数组中的第一个属性)==" PropertyName" :"颜色" 然后,属性数组中相应对象的FilteredAs属性为" FilteredAs" :" AllColors",AllColors将更改为" Red"。
关于如何实现这一目标的任何想法?谢谢!
编辑:这就是我现在所拥有的:
angular.forEach($scope.items, function (value, key) {
for (var i = 0; i<= $scope.properties.length; i++) {
if ($scope.properties[i].PropertyName == $scope.items[value]) {
$scope.properties[i].SearchText = $scope.items[key];
}
}
答案 0 :(得分:0)
如果我理解正确,因为$ scope.properties是一个数组,你需要通过对象foreach
并识别Color的属性。下面应该做你想要的。
$scope.properties.forEach(function (property) {
if (property.PropertyName === "Color") {
property.FilteredAs = "Red" // Or whatever value or variable you have got back from webservice
}
});
希望我已经理解正确,这有帮助。
编辑:
因为$scope.items
是一个数组angular.forEach的工作方式与对象相同。您需要将代码更改为如下所示。
angular.forEach($scope.items, function (item) {
for (var i = 0; i<= $scope.properties.length; i++) {
if ($scope.properties[i].PropertyName == "Color") {
$scope.properties[i].SearchText = item.Color;
}
}
虽然$scope.properties[i].SearchText
的值始终是$scope.items
数组中的最后一个颜色。您可能需要添加一些选中的内容,以确保从WebService所说的数组中选择正确的颜色。