AngularJS根据另一个数组更改属性值

时间:2014-09-16 09:20:54

标签: json angularjs

我有一个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];
                }
            }

1 个答案:

答案 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所说的数组中选择正确的颜色。