Angularjs中的factory在promise之後,如何更新在controller中的資料?

來源:互聯網
上載者:User
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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.