2016-07-03 1 views
0

テンプレートにng-initを使用して、curUIDをコントローラーに渡します。 その後、コントローラは、curUIDをURLパラメータとして使用して、サービス内の情報を取得する必要があります。角度リソース.getは、ng-initの後に渡されたユーザーIDの値を変更しません。

コントローラー:

 $scope.getCurUID = function() { 
     return parseInt($scope.curUID, 10); 
    } 
    $scope.curUser = hosterFactory.getHoster().get({id:$scope.getCurUID(), isArray:true}).$promise.then(
      function(response){ 
       respose = $scope.changeData(response); 
       $scope.curUser = response; 
       console.log("curUser: (curUID): "+parseInt($scope.curUID, 10)); 
       console.log(response); 
      }, 
      function(response) { 
       console.log("error curUser: "); 
       console.log(response); 
       $scope.message = "Error: "+response.status + " " + response.statusText; 
      } 
    ); 

サービス:

.service('hosterFactory', ['$resource', 'baseURL', function($resource,baseURL) { 

     this.getHoster = function(){ 
      var res = $resource("/api/rest/user/:id", null, {'get':{method:'GET', isArray:true},'update':{method:'PUT' }}); 
      return res; 
     }; 

    }]) 

すべてが正常に動作207(例えば)として、私は直接に.get IDで書く場合。 しかし、上記の方法を使用すると、curUIDを0として使用すると間違っています。

答えて

1

ここで時系列順に、何が起こるかです:コントローラは

  • は、コントローラ機能は、このように実行されるインスタンス化とhosterFactory.getHoster().get({id:$scope.getCurUID() ...
  • NG-INITを呼び出している

    • 現在のユーザIDを設定

    ng-initは使用しないでください。明示的には、(ほとんど)使用しないでください。より良い方法があります。コントローラーが何のために使用されているのか、そしてアプリケーションがどのように見えるのかわからないので、何を伝えるのは難しいです。

    それでもNG-のinitを使用したいと思うなら、それは次のようになります。

    ng-init="init(theUserId)" 
    

    $scope.init()関数が渡されたのuserIdを取り、HTTPリクエストを行う必要があります。

  • 関連する問題