gpt4 book ai didi

angularjs - 为什么我会收到多个针对单个项目的电话?

转载 作者:行者123 更新时间:2023-12-04 21:12:48 26 4
gpt4 key购买 nike

我正在尝试调用服务器以获取基于下拉列表中选择的特定 ID 的项目列表。

html:

 <tr ng-repeat="parent in model.waivers">
<td><select ng-model="parent.ID" ng-options="object.Key as object.Value for object in model.myObject"></select></td>
<td><select ng-model="parent.ServiceNameID" ng-options="expectedResult.Key as expectedResult.Value for expectedResult in model.output(object.ID)"></select></td>
</tr>

Controller :
    $scope.model.output = function(id) {
console.log(id);
}

模型:
var Model = function() {
this.parent = [];
};

我只是在这里记录它以查看结果。我真正想做的是根据该 ID 获取一个列表。

如果有 3 个表行,那么输出是:
1
1
1
2
2
3
3
1
2
3
1

代替:
1
2
3

这是我所期望的,因为每行只有一个 id。

关于导致这种行为的原因有什么建议吗?

更新

所以@Fieldset 告诉我这个问题是由 angular 为父项中的每个项目调用一次该方法引起的。

关于如何做到这一点的任何建议,每个项目只调用一次方法?

最佳答案

您的代码在 ng-repeat 中,因此 model.output(object.ID) 将被调用与 model.waivers 中的元素一样多的次数。

您不能像这样向您的服务器发出请求,因为您的 HTTP 请求将是异步的并返回一个 promise ,并且您不能在您的 View 中使用 promise 。你必须在你的 Controller ($scope)中加载你的数据,然后你的 View 将能够通过 $scope 访问你的数据

您必须先请求数据:

Controller

function($scope, $http) {

$scope.data = [];

//This is asynchronous
$http.get('my/path/to/my.data').success(function(data) {
$scope.data = data;
});

}

编辑:
angular.module('myApp', []).controller('myCtrl', function($scope, $http, $q) {

//One request per id
var ids = [4, 52, 65, 12, 78];
var promises = [];

ids.forEach(function(id) {
promises.push($http.get('my/path/to/my.data?id='+id));
});



//Fill $scope.data when all requests are done
$scope.data = [];

$q.all(promises).then(function(data){

$scope.data = data;

/**
* You get something wich looks like
*
* Assuming that your webservice returns a response like {id: 4, name: 'Something'}
*
* $scope.data = [
* {id: 4, name: 'Something'},
* {id: 52, name: 'Something else'},
* {id: 65, name: 'foo'},
* {id: 12, name: 'bar'},
* {id: 78, name: 'foobar'}
* ];
*
* So you can loop over $scope.data in your view
*
*/

});

});

关于angularjs - 为什么我会收到多个针对单个项目的电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916408/

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