Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript array.push(对象)具有角度ng repeat,未按预期运行_Javascript_Angularjs - Fatal编程技术网

JavaScript array.push(对象)具有角度ng repeat,未按预期运行

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

在我的应用程序的其他区域中,我有几乎完全相同的代码片段,它工作得非常好

我将一个对象推入一个空数组,并且在视图中有一个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.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]
?是的,都设置好了,我只提供了查找问题所需的内容。