Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 在角度函数中强制刷新嵌套函数_Javascript_Angularjs_Arrays - Fatal编程技术网

Javascript 在角度函数中强制刷新嵌套函数

Javascript 在角度函数中强制刷新嵌套函数,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我是Angular(1.x)的完全初学者,我一直在尝试将其缝合到我正在开发的应用程序中 它基本上通过ajax(多个嵌套数组)接收整个用户数据,然后使用嵌套的ng repeat指令进行渲染。在最里面的repeat中,我运行了一个函数,该函数返回基于当前日期的数据 {{dateBasedFunction(j.data)} 背景 ng重复在这里没有造成任何问题。我们需要关注:{{dateBasedFunction(j.data)} Angular正在创建一个脏检查循环每次迭代时的表达式dateBa

我是Angular(1.x)的完全初学者,我一直在尝试将其缝合到我正在开发的应用程序中

它基本上通过ajax(多个嵌套数组)接收整个用户数据,然后使用嵌套的ng repeat指令进行渲染。在最里面的repeat中,我运行了一个函数,该函数返回基于当前日期的数据


{{dateBasedFunction(j.data)}

背景

ng重复在这里没有造成任何问题。我们需要关注:
{{dateBasedFunction(j.data)}

Angular正在创建一个脏检查循环每次迭代时的表达式
dateBasedFunction(j.data)
。如果结果值自上次摘要以来发生了更改,则DOM将使用新值更新

问题是,代码中没有任何东西触发角度摘要循环

工作示例

在这里,我们可以通过用户交互手动触发摘要来查看您的情况:

var myApp=angular.module('myApp',[]);
控制器('MyCtrl',['$scope',MyCtrl]);
函数MyCtrl($scope){
$scope.rootArray=[{
“阵列1”:[{
“array2”:[{
“数据”:“你好”
}, {
“数据”:“世界”
}]
}]
}];
//每当调用摘要时,都会发出虚拟$watch警报
$scope.$watch(函数(){
log('Digest called');
});
$scope.dateBasedFunction=函数(x){
var d=新日期();
返回x++(“+d.getMinutes()+”:“+d.getSeconds()+”);
}
}

ng单击调用摘要()
{{dateBasedFunction(j.data)}

背景

ng重复在这里没有造成任何问题。我们需要关注:
{{dateBasedFunction(j.data)}

Angular正在创建一个脏检查循环每次迭代时的表达式
dateBasedFunction(j.data)
。如果结果值自上次摘要以来发生了更改,则DOM将使用新值更新

问题是,代码中没有任何东西触发角度摘要循环

工作示例

在这里,我们可以通过用户交互手动触发摘要来查看您的情况:

var myApp=angular.module('myApp',[]);
控制器('MyCtrl',['$scope',MyCtrl]);
函数MyCtrl($scope){
$scope.rootArray=[{
“阵列1”:[{
“array2”:[{
“数据”:“你好”
}, {
“数据”:“世界”
}]
}]
}];
//每当调用摘要时,都会发出虚拟$watch警报
$scope.$watch(函数(){
log('Digest called');
});
$scope.dateBasedFunction=函数(x){
var d=新日期();
返回x++(“+d.getMinutes()+”:“+d.getSeconds()+”);
}
}

ng单击调用摘要()
{{dateBasedFunction(j.data)}

hi,当您使用ng repeat时,angular会对对象进行脏监视,并根据更改刷新视图。你不需要这样做。Angular 1.x单独创建@lvaroTouzón不幸的是,事实并非如此,因为对象本身中的数据不会改变。真正改变的是系统时间(在函数内部),所以angular没有办法解决这个问题。。。我需要运行一个间隔检查,但我不知道该在它上面运行哪个代码!您需要知道对象何时发生了更改,而更改并不是由您的责任来完成的(如ajax、输入…)。然后您需要添加一个监视程序$rootscope。$apply();将强制angular应用程序重新加载数据。但这是一种糟糕的做法。如果您的数据没有更改,为什么要重新发布?似乎我这里有一个更深层次的问题。。。也许我应该有两个数据集,一个从服务器输入原始数据,另一个用于angular渲染处理后的数据。这样它就能正确地观察变化。我暂时不讨论这个话题,也许有人会提供一个好的替代方案。嗨,当你使用ng repeat,angular对对象进行脏监视,并在更改时刷新视图。你不需要这样做。Angular 1.x单独创建@lvaroTouzón不幸的是,事实并非如此,因为对象本身中的数据不会改变。真正改变的是系统时间(在函数内部),所以angular没有办法解决这个问题。。。我需要运行一个间隔检查,但我不知道该在它上面运行哪个代码!您需要知道对象何时发生了更改,而更改并不是由您的责任来完成的(如ajax、输入…)。然后您需要添加一个监视程序$rootscope。$apply();将强制angular应用程序重新加载数据。但这是一种糟糕的做法。如果您的数据没有更改,为什么要重新发布?似乎我这里有一个更深层次的问题。。。也许我应该有两个数据集,一个从服务器输入原始数据,另一个用于angular渲染处理后的数据。这样它就能正确地观察变化。我暂时不讨论这个话题,也许有人会提出一个好的选择