gpt4 book ai didi

javascript - AngularJs - forEach 范围数组 - 不工作

转载 作者:行者123 更新时间:2023-11-30 05:48:41 25 4
gpt4 key购买 nike

我承认我在做一些蠢事,所以请原谅我:

HTML:

Filter: <input type="radio" ng-model="Type" value="Rear"> Rear
<input type="radio" ng-model="Type" value="Front"> Front
<br>
Select:
<name-value-select entry="entry" field="axleType" options="filterTypes"></name-value-select>

Controller :

$scope.$watch('Type', function (Type) {
$scope.filterTypes = [];
if ($scope.axleTypes == undefined || $scope.axleTypes == []) {
$scope.axleTypes = API.GetAxleTypes;
}
angular.forEach($scope.axleTypes, function (type) {
console.log('axleType: ' + type);
console.log('Type: ' + type);
if (axleType.Type == Type) {
this.push(axleType);
}
}, $scope.filterTypes);
$scope.filterTypes.sort(function (a, b) {
return a.Description.localeCompare(b.Description);
});
});

我什至无法在我的监视函数中循环遍历 axleTypes 数组。它似乎没有选择一个奇怪的集合,因为如果未定义或 [],它会绕过填充 axleTypes。

我正在做一些愚蠢的事情,我看不到。

更新:根据 Jason 的要求

(1) 我的 Angular Controller :

$scope.entry = {
Description: ''
};
$scope.Type = 'Front';
$scope.entry.type = '';

$scope.$watch('Type', function (Type) {
$scope.filterTypes = [];
$scope.axleTypes = new API.GetAxleTypes(function (axleTypes) {
angular.forEach($scope.axleTypes, function (axleType) {
if (axleType.Type == Type) {
this.push(axleType);
}
}, $scope.filterTypes);
});

$scope.filterTypes.sort(function (a, b) {
return a.Description.localeCompare(b.Description);
});
});

(2)我的 Html:

Filter: <input type="radio" ng-model="Type" value="Rear"> Rear
<input type="radio" ng-model="Type" value="Front"> Front
<br>
Select:
<name-value-select entry="entry" field="axleType" options="filterTypes"></name-value-select>

没有更多错误 Jason,但是,当我切换两个单选按钮时没有任何反应,即,当我选择后轴单选按钮时,前轴仍然显示。呃。

最佳答案

好的,很酷。我想这就是你想要做的。基本上你首先加载你的数据,然后设置 watch 。这样我们就不会多次调用异步调用。我修改了 Plunker 以使用此方法 http://plnkr.co/edit/lQbn4hXmJ1Z4YpKdb4u3?p=preview :

$scope.axleTypes = API.GetAxleTypes(function () {
$scope.$watch('Type', function (Type) {
$scope.filterTypes = [];
angular.forEach($scope.axleTypes, function (type) {
console.log('axleType: ' + type);
console.log('Type: ' + type);
if (axleType.Type == Type) {
this.push(axleType);
}
if(!$scope.$$phase) $scope.$digest();
}, $scope.filterTypes);
});
});

$scope.filterTypes.sort(function (a, b) {
return a.Description.localeCompare(b.Description);
});

关于javascript - AngularJs - forEach 范围数组 - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com