JavaScript array.push(对象)具有角度ng repeat,未按预期运行
在我的应用程序的其他区域中,我有几乎完全相同的代码片段,它工作得非常好 我将一个对象推入一个空数组,并且在视图中有一个ng重复 JavaScript:JavaScript array.push(对象)具有角度ng repeat,未按预期运行,javascript,angularjs,Javascript,Angularjs,在我的应用程序的其他区域中,我有几乎完全相同的代码片段,它工作得非常好 我将一个对象推入一个空数组,并且在视图中有一个ng重复 JavaScript: $scope.upload = $upload.upload({ url: BASE + 'files/tasks', file: file, data: data }).success(function(data) { for(var i = 0; i < $scope.case.task.notes.le
$scope.upload = $upload.upload({
url: BASE + 'files/tasks',
file: file,
data: data
}).success(function(data) {
for(var i = 0; i < $scope.case.task.notes.length; i++) {
if($scope.case.task.notes[i].in_api === false) {
$scope.case.task.notes[i].documents.push(data);
}
}
});
当我第一次加载页面时,所有包含文档的注释都会正确显示。但是,当从上述upload
函数调用success函数,并将文档推送到便笺的数组中时,它不会出现在视图中
如果有区别的话,上面的HTML也被一个ng repeat
所包围,它在每个音符上迭代(因此是多层次的)
有什么问题吗?JavaScript函数运行正常,但模型运行时视图不会更新。尝试使用$scope。$apply()告诉视图范围数据已更改:
.success(function(data) {
// Do what you want.
$scope.$apply();
});
$apply()用于从angular框架外部执行angular中的表达式。(例如,来自浏览器DOM事件、setTimeout、XHR或第三方库)。因为我们正在调用angular框架,所以我们需要执行异常处理的适当范围生命周期,执行监视
尝试使用$scope.$apply()告诉视图范围数据已更改:
.success(function(data) {
// Do what you want.
$scope.$apply();
});
$apply()用于从angular框架外部执行angular中的表达式。(例如,来自浏览器DOM事件、setTimeout、XHR或第三方库)。因为我们正在调用angular框架,所以我们需要执行异常处理的适当范围生命周期,执行监视
您似乎使用了不同的变量。在HTML中,您可以使用
note.documents
:
ng-repeat="document in note.documents ...
在JavaScript中,使用$scope.case.task.notes[i].documents
您需要使它们引用相同的数组。也许如果你设定
$scope.documents = $scope.case.task.notes[i].documents;
在JavaScript中,将HTML更改为
ng-repeat="document in documents ..."
然后,选择这些变化?您似乎使用了不同的变量。在HTML中,您可以使用
note.documents
:
ng-repeat="document in note.documents ...
在JavaScript中,使用$scope.case.task.notes[i].documents
您需要使它们引用相同的数组。也许如果你设定
$scope.documents = $scope.case.task.notes[i].documents;
在JavaScript中,将HTML更改为
ng-repeat="document in documents ..."
然后用Angular拾取更改?使其在初始负载下工作,告诉我们“note.documents”是正确的引用。尝试在success中将“notes”的任何实例更改为“note”。因此,它在初始加载时起作用,告诉我们“note.documents”是正确的引用。尝试在成功中将“notes”的任何实例更改为“note”。与$scope.$apply()的结果相同。与$scope.$apply()的结果相同。不,这是正确的。就像我说的,我在上面迭代注释(case.task.notes中的注释)。所以你在某处设置
$scope.note=$scope.case.task.notes[I]
?是的,都设置好了,我只提供了找到问题所需的内容。不,这是正确的。就像我说的,我在上面迭代注释(case.task.notes中的注释)。所以你在某处设置$scope.note=$scope.case.task.notes[I]
?是的,都设置好了,我只提供了查找问题所需的内容。