gpt4 book ai didi

javascript - 为什么没有填充 ngRepeat

转载 作者:行者123 更新时间:2023-11-30 15:57:08 28 4
gpt4 key购买 nike

我在我的 Angular 应用程序中使用 ngRepeat,由于某种原因,ngRepeat 没有填充,即使它连接到的集合填充了正确的数据。

我正在做的是向节点服务器发送 http get 请求以请求数据,检查来自服务器的结果,并在连接到该特定 ngRepeat 的范围内填充一个集合。

Html文件的ngRepeat部分:

        <div id="cellRow" ng-repeat="obj in rowsCollection track by obj.index">
<div class="inputsContainer">
<input ng-model="obj.col1"></input>
<input ng-model="obj.col2"></input>
<input ng-model="obj.col3"></input>
</div>
</div>

Ctrl 代码:

 angular.module('App').controller('Ctrl', ['$scope','dataUtils', function($scope,dataUtils) {
$scope.dataObj = null;
$scope.rowsCollection = [];
dataUtils.getDataObj()
.then($scope.initializeObjects)
.catch($scope.showError);


$scope.initializeObjects = function(data) {
if( data && data.length > 0 ) {
for(var index = 0; index < 21; index++) {
$scope.dataObj = {};
$scope.dataObj.index = index + 1;
$scope.dataObj.col1 = data[0][index];
$scope.dataObj.col2 = data[1][index];
$scope.dataObj.col3 = data[2][index];
$scope.rowsCollection.push($scope.dataObj);
}
}
};

$scope.showError = function(errorMsg) {
console.log(errorMsg);
};

}]);

dataUtils.getDataObj 从服务器调用 http get 请求。以这种形式使用 Controller 时,我看到调用了 initializeObjects 函数并填充了 rowCollection 集合,但 ngRepeat 保持为空。

在我更改 Ctrl ro 后,以下代码:

angular.module('App').controller('Ctrl', ['$scope','dataUtils', function($scope,dataUtils) {
$scope.dataObj = null;
$scope.rowsCollection = [];
dataUtils.getDataObj()
.then(initializeObjects)
.catch(showError);

function initializeObjects(data) {
if( data && data.length > 0 ) {
for(var index = 0; index < 21; index++) {
$scope.dataObj = {};
$scope.dataObj.index = index + 1;
$scope.dataObj.col1 = data[0][index];
$scope.dataObj.col2 = data[1][index];
$scope.dataObj.col3 = data[2][index];
$scope.rowsCollection.push($scope.dataObj);
}
}
}

function showError(errorMsg) {
console.log(errorMsg);
}
}]);

ngRepeat 确实填充了,为什么 ngRepeat 在第一个 Ctrl 配置中没有填充但在第二个配置中填充了?

最佳答案

如果你想使用第一种方式,因为你正在调用一个函数,它必须在最后有 ()

所以为了实现你想要的,你应该改变这个:

.then($scope.initializeObjects)

用于:

.then($scope.initializeObjects())

注意:第二种方法更好,因为你需要在另一时刻重用这个$scope函数,否则,将它作为一个普通的函数( )

关于javascript - 为什么没有填充 ngRepeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38342782/

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