Angularjs中的factory在promise之后,如何更新在controller中的数据?
程序员文章站
2024-02-05 11:48:16
...
app.factory('mainClass',function($http,mainFac){
var mainClass=function(){
this.uid;
this.sid;
this.getUid();
}
mainClass.prototype.getUid=function(){
var promise = mainFac.query('OPT','PARM1','PARM2');
promise.then(function(data){
console.info("mainClass is :",data);
this.sid=data.sid;
console.info("this.sid :",this.sid);
});
};
return mainClass;
});
app.controller('perCenterCtrl', function($scope, $http, $state, ngDialog,
qfact, myfactory,mainFac,mainClass) {
var mainObj=new mainClass();
console.info("mainObj is :",mainObj);
$scope.sid=mainObj.sid;
});
代码目的:
controller顺序执行,遇到名为mainClass的factory初始化,mainClass异步初始化,从后台拿到数据并更新自己的this.sid,此时在controller中也更新$scope.sid;
遇到困难:
我的理解是:$scope.sid=mainObj.sid;已经绑定了,在mainClass执行过程,异步地从后台拿到数据并更新自己的this.sid后,$scope.sid应相应更新自己的值,可是并没有更新;
回复内容:
app.factory('mainClass',function($http,mainFac){
var mainClass=function(){
this.uid;
this.sid;
this.getUid();
}
mainClass.prototype.getUid=function(){
var promise = mainFac.query('OPT','PARM1','PARM2');
promise.then(function(data){
console.info("mainClass is :",data);
this.sid=data.sid;
console.info("this.sid :",this.sid);
});
};
return mainClass;
});
app.controller('perCenterCtrl', function($scope, $http, $state, ngDialog,
qfact, myfactory,mainFac,mainClass) {
var mainObj=new mainClass();
console.info("mainObj is :",mainObj);
$scope.sid=mainObj.sid;
});
代码目的:
controller顺序执行,遇到名为mainClass的factory初始化,mainClass异步初始化,从后台拿到数据并更新自己的this.sid,此时在controller中也更新$scope.sid;
遇到困难:
我的理解是:$scope.sid=mainObj.sid;已经绑定了,在mainClass执行过程,异步地从后台拿到数据并更新自己的this.sid后,$scope.sid应相应更新自己的值,可是并没有更新;
app.factory('mainClass',function(mainFac){
function getUid(){
mainFac.query('OPT','PARM1','PARM2').then(function(response){
return response;
},function(error){
return error;
});
}
return {getUid};
});
app.controller('perCenterCtrl', function($scope, $http, $state, ngDialog,
qfact, myfactory,mainFac,mainClass) {
mainClass.getUid().then(function(data){
console.info("mainObj is :",data);
$scope.sid=data.sid;
});
});
没太看懂,你这么写写试试。建议你看看这个:http://each.sinaapp.com/angular/tutorial/ng-factory.html
推荐阅读
-
Angularjs中的factory在promise之后,如何更新在controller中的数据?
-
关于react在componentDidMount中请求之后的数据无法更新表单的问题
-
如何实现数据表中某个字段在每天固定时间的自动更新
-
如何实现数据表中某个字段在每天固定时间的自动更新
-
在Vue中父子组件的数据传递、修改和更新是如何实现的(详细教程)
-
Angularjs中的factory在promise之后,如何更新在controller中的数据?
-
在Vue中父子组件的数据传递、修改和更新是如何实现的(详细教程)
-
在解决JPA中 如何防止修改实体的属性后不自动更新数据库问题时遇到的其它问题??? daojavajpa