Angularjs 当';在进入'之前;
我在Angularjs 当';在进入'之前;,angularjs,ionic-framework,angular-ui-router,state,Angularjs,Ionic Framework,Angular Ui Router,State,我在DoctorHomeCtrl中插入testResolve, 加载时,testResolve的值是正确的。 转到另一个页面并返回后,将启动函数,但testResolve的值不会更新 controller: 'DoctorHomeCtrl', resolve:{ testResolve:function ($q, $timeout) { var defer = $q.defer(); $timeout(function () {
DoctorHomeCtrl
中插入testResolve
,
加载时,testResolve的值是正确的。
转到另一个页面并返回后,将启动函数,但testResolve的值不会更新
controller: 'DoctorHomeCtrl',
resolve:{
testResolve:function ($q, $timeout) {
var defer = $q.defer();
$timeout(function () {
defer.resolve(new Date());
}, 100);
return defer.promise;
}
}
.....
.controller('DoctorHomeCtrl', [....,'testResolve',
function (....,testResolve) {
$scope.$on('$ionicView.beforeEnter', function () {
console.log('testResolve');
console.log(testResolve);
});
行为:
…转到另一个页面并返回后,函数被激发,但testResolve的值未更新
这是正确的。简单地说,爱奥尼亚做了一些自定义的,脱离用户界面的路由器性能优化。。。缓存。这意味着,它破坏了预期的UI路由器行为。。因为:
只要是视图init,并且其控制器
被实例化。。。将触发解析
但是在这里。。我们提供了缓存控制器。。。没有被重新初始化
解决方案?也许就像这里讨论的那样
避免缓存。。。或者只需在OneNet事件中解决问题…行为:
…转到另一个页面并返回后,函数被激发,但testResolve的值未更新
这是正确的。简单地说,爱奥尼亚做了一些自定义的,脱离用户界面的路由器性能优化。。。缓存。这意味着,它破坏了预期的UI路由器行为。。因为:
只要是视图init,并且其控制器
被实例化。。。将触发解析
但是在这里。。我们提供了缓存控制器。。。没有被重新初始化
解决方案?也许就像这里讨论的那样
避免缓存。。。或者只在OneNet事件中执行resolve…如果在testResolve()函数中放入console.log,它会在返回页面时触发吗?是的,它会触发并记录更新的值。PS:在ngRoute中,这是绝对正确的。如果在testResolve()函数中放入console.log,它会在返回页面时触发吗?是的,它触发并记录了更新的值。PS:在ngRoute中,它绝对正确。谢谢。而且“缓存控制器也触发解析”正确与否?嗯,缓存意味着。。它已经启动了。并且只有在初始化(创建)期间才计算resolve,以便将数据正确地传递到构造函数中。。。所以,缓存将永远不会重新触发。。。希望对你有所帮助。。。UI Router和Ionic很幸运,但解析也会在goback时触发。我认为不应该触发它。这取决于,这是否会触发缓存控制器,或者这是否会破坏旧视图。。。创造新的。也。。存在一个缓存大小,它会释放较旧的缓存项。。但总的来说。。在这种情况下,不要将resolve用于Ionic。它的缓存将是不可预测的。。。帮助?明白了。无论如何,我计划只在“已加载”中处理数据。感谢anwser。谢谢。而且“缓存控制器也触发解析”是否正确?好吧,缓存意味着。。它已经启动了。并且只有在初始化(创建)期间才计算resolve,以便将数据正确地传递到构造函数中。。。所以,缓存将永远不会重新触发。。。希望对你有所帮助。。。UI Router和Ionic很幸运,但解析也会在goback时触发。我认为不应该触发它。这取决于,这是否会触发缓存控制器,或者这是否会破坏旧视图。。。创造新的。也。。存在一个缓存大小,它会释放较旧的缓存项。。但总的来说。。在这种情况下,不要将resolve用于Ionic。它的缓存将是不可预测的。。。帮助?明白了。不管怎样,我计划只在“已加载”中处理数据。感谢anwser。