>백엔드 개발 >PHP 튜토리얼 >Angularjs의 팩토리는 Promise 이후 컨트롤러의 데이터를 어떻게 업데이트합니까?

Angularjs의 팩토리는 Promise 이후 컨트롤러의 데이터를 어떻게 업데이트합니까?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-08-04 09:21:07852검색

<code>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;
});
</code>

코드 목적:
컨트롤러는 순차적으로 실행되어 mainClass라는 공장 초기화를 만나고, mainClass는 비동기적으로 초기화되고, 백그라운드에서 데이터를 가져와서 자체 this.sid를 업데이트합니다. ;
문제 발생:
제가 이해한 바는 다음과 같습니다. $scope.sid=mainObj.sid; mainClass를 실행하는 동안 비동기적으로 백그라운드에서 데이터를 가져와 자체적으로 업데이트합니다. this.sid., $scope.sid는 이에 따라 값을 업데이트해야 하지만 업데이트되지 않습니다.

답글 내용:

<code>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;
});
</code>

코드 목적:
컨트롤러는 순차적으로 실행되어 mainClass라는 공장 초기화를 만나고, mainClass는 비동기적으로 초기화되고, 백그라운드에서 데이터를 가져와서 자체 this.sid를 업데이트합니다. ;
문제가 발생했습니다.
제가 이해한 바는 다음과 같습니다. $scope.sid=mainObj.sid; mainClass 실행 프로세스 중에 백그라운드에서 데이터를 비동기적으로 가져와 자체적으로 업데이트합니다. this.sid., $scope.sid는 이에 따라 값을 업데이트해야 하지만 업데이트되지 않습니다.

<code>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;
        });
});
</code>

잘 모르겠는데 이렇게 써보세요. 다음을 살펴보시기 바랍니다: http://each.sinaapp.com/angular/tutorial/ng-factory.html

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.