2014-12-08 10 views
0

컨트롤러에서 나는 공장에서 객체를 반환하고 있습니다. 메소드는 콜백 유형입니다.AngularJs에서 콜백 함수를 처리하는 방법?

하지만 문제는 물체가 물러서지 않는 것입니다.

내 구현은 다음과 같음 :

.factory('fileReadFactory', ['$http', 
    function ($http) { 

     var objRead = { 
      setReadObject: '', 
      setPath: 'comMyTaxi', 
      setFileName: '', 
      status: false, 
      errorCode: '' 
     }; 
     var factory = {}; 
     factory.fileRead = function RequestFileSystem(fileName) { 

      alert('factory start'); 
      objRead.setFileName = fileName; 


      try { 
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createDirectory, fail); 
       objRead.status = true; 
       return objRead; 
      } catch (e) { 
       return objRead; 
      } 
     } 
     ///write steps starts 
     function createDirectory(fs) { 
      fs.root.getDirectory(objRead.setPath, {create: true, exclusive: false}, onSuccessCreateFile, fail); 
     } 

     function onSuccessCreateFile(dirEntry) { 
      dirEntry.getFile(objRead.setFileName + '.txt.gz', null, gotFileEntryRead, fail); 
     } 

     function gotFileEntryRead(fileEntry) { 
      // alert('in 2 type step2'); 
      fileEntry.file(gotFileReading, fail); 
     } 

     function gotFileReading(file) { 
      // alert('in 2 type step3'); 
      readFile(file); 
     } 

     function readFile(file) { 
      // alert('in 2 type step4'); 
      var reader = new FileReader(); 
      reader.onloadend = function (e) { 
       // alert("Text is: "+this.result); 
       objRead.setReadObject = this.result; 

      } 
      reader.readAsText(file); 
      // alert('reading Ends'); 
     } 

     //write file ends 

     function fail(err) { 
      alert('error ' + err.code); 
      objRead.errorCode = err.code; 
      throw e; 
     } 
     return factory; 
    }]); 

그리고이 경우 블록을 받고 있지 않다

var objReturn = fileReadFactory.fileRead('myProfile'); 
    alert(objReturn.status); 
    alert(JSON.parse(objReturn.setReadObject)); 
    if(objReturn.status){ 
     var obj= JSON.parse(objReturn.setReadObject); 

     // alert(obj); 
     // alert('Inside Object World'); 
     $scope.myprofile = obj; 
    } 

같은 컨트롤러 안에 내 전화입니다. 그렇다면 콜백을 어떻게 관리해야합니까?

답변

0

서비스를 호출하고 then() 함수에서 경고를 실행 해보십시오. 약속에 대해서도 읽어야합니다. http://andyshora.com/promises-angularjs-explained-as-cartoon.html

var objReturn = fileReadFactory.fileRead('myProfile').then(function(){ 
    alert(objReturn.status); 
    alert(JSON.parse(objReturn.setReadObject)); 
    if(objReturn.status){ 
     var obj= JSON.parse(objReturn.setReadObject); 

     // alert(obj); 
     // alert('Inside Object World'); 
     $scope.myprofile = obj; 
    } 
}); 
관련 문제