2013-05-28 9 views
9

をangularjs私は私の工場に変数を渡すTE好きですが、それを行う方法イムかなり確実ではないでしょう、ここに私のコードは次のとおりです。パス変数が

var app = angular.module('docFinder', []); 

app.factory('docFactory', function($http) { 
    var url = 'http://test.example.com?queryString=searchv2&page='; 
    url=url+page; 
    var docFactory = { 
    async: function() { 
     var promise = $http.get(url).then(function (response) { 
     return response.data; 
     }); 
     return promise; 
    } 
    }; 
    return docFactory; 
}); 

app.controller('docTable', function(docFactory, $scope, $filter) { 

    docFactory.async().then(function(d) { 
     $scope.providers = d;  
     init(); 
    }); 

}

私がでしょうそれは私の新しいクエリを返すことができますので、私のコントローラからの私の工場にページを送信するために

おかげ

答えて

13

が好きなあなたは、あなたの要因であなたのasync機能から値を渡すことができますY:通常通り呼び出され

var docFactory = { 
    async: function(theVarThatIWantedToPass) { 
     var url=// stuff 
     url += theVarThatIWantedToPass; 
    } 
} 

:私は1つを生成するために、工場やPDFファイルを開くと、多くのコントローラそれぞれ自分のURLとファイル名を渡すことがしたいからです docFactory.async(ページ)

-1

コントローラを薄く保つことができます。

これは、ファイル転送およびinappbrowserコルドバのプラグインを使用してNIC raboyチュートリアルhttps://blog.nraboy.com/2014/09/manage-files-in-android-and-ios-using-ionicframework/から工場です:

.factory('pdf-service', function($scope, $ionicLoading){ 

if(window.cordova && window.cordova.InAppBrowser){ 
    window.open = window.cordova.InAppBrowser.open; 
    console.log("InAppBrowser available"); 
    } else { 
    console.log("InAppBrowser not available"); 
    } 

    $scope.download = function() { 
    $ionicLoading.show({ 
     template: 'Loading...' 
    }); 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { 
     fs.root.getDirectory("ExampleProject",{create: true}, 
      function(dirEntry) { 
       dirEntry.getFile(
        "pdf-number-1.pdf", 
        { 
         create: true, 
         exclusive: false 
        }, 
        function gotFileEntry(fe) { 
         var p = fe.toURL(); 
         fe.remove(); 
         ft = new FileTransfer(); 
         ft.download(
          encodeURI("http://www.someservice.com"), 
          p, 
          function(entry) { 
           $ionicLoading.hide(); 
           $scope.imgFile = entry.toURL(); 
          }, 
          function(error) { 
           $ionicLoading.hide(); 
           alert("Download Error Source -> " + error.source); 
          }, 
          false, 
          null 
         );       
        }, 
        function() { 
         $ionicLoading.hide(); 
         console.log("Get file failed"); 
        } 
       ); 
      } 
     ); 
    }, 
    function() { 
     $ionicLoading.hide(); 
     console.log("Request for filesystem failed"); 
    }); 
    } 

    $scope.load = function() { 
     $ionicLoading.show({ 
     template: 'Loading...' 
     }); 

     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { 
      fs.root.getDirectory(
       "ExampleProject", 
       { 
        create: false 
       }, 
       function(dirEntry) { 
        dirEntry.getFile(
         "pdf-number-1.pdf", 
         { 
          create: false, 
          exclusive: false 
         }, 
         function gotFileEntry(fe) { 
          $ionicLoading.hide(); 
          $scope.imgFile = fe.toURL(); 
          alert(fe.toURL()); 
          window.open(fe.toURL(), '_system', 'location=no,toolbar=yes,closebuttoncaption=Close PDF,enableViewportScale=yes'); 
         }, 
         function(error) { 
          $ionicLoading.hide(); 
          console.log("Error getting file"); 
         } 
       ); 
       } 
     ); 
     }, 
     function() { 
      $ionicLoading.hide(); 
      console.log("Error requesting filesystem"); 
     }); 
    } 
});