1

ユーザーがストア サイトの「High」グループのメンバーである場合、製品 SKU の「Red」および「Blue」ドロップダウン リスト オプションを削除しようとしています。私が思いついたコードは以下のとおりですが、部分的にしか機能しません。機能する唯一のものはウィンドウアラートです。ここで、ユーザーのグループを検索するロジックを削除すると機能しますが、ユーザーは最初にカラー ドロップダウンの値を設定する必要があります。

function SpecController($scope) {
    angular.forEach($scope.user.Groups, function (g) {
        if (g.Name == "High") {
            alert('You are in the correct group!');
            $scope.$watch('user.Groups.Name', function (val) {
                if (!val) return;
                if (val == "High") {
                    $scope.Variant.Specs.Color.Options = $scope.Variant.Specs.Color.Options.filter(function (item) {
                        return item.Value !== 'Red' && item.Value !== 'Blue';
                    });
                }
            });
        }
    });
}
4

1 に答える 1

1

あなたの目標は、オブジェクトgroupNameのそれぞれGroupの中にある時計を置くことです。したがって、現在のウォッチャーは、実際には存在しないものをGroups指しています。user.Groups.Name現在のコードを機能させたい場合は、配置中にインデックスを使用できます$watch

コード

function SpecController($scope) {
    angular.forEach($scope.user.Groups, function (g,index) { //added index param here
        if (g.Name == "High") {
            alert('You are in the correct group!');
            //used that index param here to put watch on each group.
            $scope.$watch('user.Groups['+ index + '].Name', function (val) { 
                if (!val) return;
                if (val == "High") {
                    $scope.Variant.Specs.Color.Options = $scope.Variant.Specs.Color.Options.filter(function (item) {
                        return item.Value !== 'Red' && item.Value !== 'Blue';
                    });
                }
            });
        }
    });
}

ノート

に 1000 を超えると、このソリューションは混乱groupsuser.Groups、ウォッチャーの数が増加し、その結果、アプリの動作が遅くなります。

于 2015-07-05T21:22:36.530 に答える