我正在尝试在 Angular js 中读取一个文件,如果数据读取成功,它将把内容分配给对象的变量,否则它将把“NA”分配给同一个变量。
function customer($scope, $http) {
var i;
$scope.courses = [{
name: "CSE",
capacity: "CSE.txt"
}, {
name: "IT",
capacity: "IT.txt"
}, {
name: "ECE",
capacity: "ECE.txt"
}];
for (i = 0; i < 3; i++)
$http.get($scope.courses[i].capacity).then(function (success) {
$scope.courses[i].capacity = success.data;
}, function (error) {
$scope.courses[i].capacity = "NA";
});
}
var myApp = angular.module("myApp", []);
myApp.controller("customerobj", customer);
我尝试以正常的表格格式访问以下部分
<td>ng-repeat="course in courses">{{course.capacity}}</td>
但每次我这样做时都会抛出错误:“无法设置未定义的属性‘容量’”并显示文件名。即使没有找到文件,也应该将值更新为“NA”。但这并没有发生。请帮帮我
最佳答案
将您的 http 服务调用包装在另一个函数中,如下所示,并在循环中调用该函数,以便循环索引 i
值将保留在函数范围内。
更新:
如果您不需要单独的函数,也可以使用匿名函数
解决方案1
for (i = 0; i < 3; i++) {
(function (index) {
$http.get($scope.courses[index].capacity).then(function (success) {
$scope.courses[index].capacity = success.data;
}, function (error) {
$scope.courses[index].capacity = "NA";
});
} (i))
}
解决方案2
for (i = 0; i < 3; i++) {
serviceCall(i)
}
function serviceCall(index) {
$http.get($scope.courses[index].capacity).then(function (success) {
$scope.courses[index].capacity = success.data;
}, function (error) {
$scope.courses[index].capacity = "NA";
});
}
关于javascript - 无法为 JavaScript 中的对象变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265567/