2016-05-11 3 views
0

私はコントローラの設定と変数の取得に問題があります。 - そのセット[OK]を、私はsharedProperties.get()を呼び出すと、私は私のcommentsCtrlでの記事の使用から "ID" が必要コントローラからAPIを介して変数を取得

app.controller('articleCtrl', function($scope, $http, sharedProperties) { 
     $http.get('api/article') 
      .then(function(result){ 
      articleData = result.data; 
      $scope.article = articleData; 

      sharedProperties.setProperty(articleData.id); 

     })}); 

app.controller('commentsCtrl', function($http, $scope, sharedProperties) { 
    id = sharedProperties.getProperty(); 
    $http.get('api/article/'+id+'/comments') 
     .then(function(result){ 
     commentsList = result.data; 
     $scope.comments = commentsList; 

    }); 

は私がサービスに

app.service('sharedProperties', function() { 
    var data = null; 

    return { 
     setProperty: function(value) { 
      data = value; 

     }, 
     getProperty: function() { 

      return data; 
     } 
    }; 
}); 

そして、私のコントローラを作成しますそれでもデフォルトの "null"を返します。

これを修正する方法はありますか?またはコメントコントローラの記事コントローラからgetted idを使用する方法は?

フィードバックに感謝します。

+0

あなたはsharedPropertiesを注入していますか? – rrd

+0

あなたは何を意味するのですか? –

+0

app.controller( 'articleCtrl'、['$ scope'、 '$ http'、sharedProperties、function($ scope、$ http、sharedProperties){})依存関係。 – rrd

答えて

0

あなたは試すことができます:

app.service('sharedProperties', function() { 

this.data = null; 

return { 
    setProperty: function(value) { 
     this.data = value; 

    }, 
    getProperty: function() { 

     return this.data; 
    } 
}; 

});

============= ============= EDIT

[OK]を - 今私はあなたがやっているものを見ることを、このISN」本当に物事を行うための最良の方法です。 URLから$ stateParams(または類似の$ params)で記事のIDを参照する必要があります。例については、https://github.com/angular-ui/ui-routerを参照してください。基本的に、これに対処するにはいくつかの方法があります。現在、あなたのプランニングで競合状況が発生しています(つまり、2番目のコントローラーが必要とする前に値が設定されていない)。理想的な状況では、の値が「1」であるか、ルート内で定義した値になります。コントローラを初期化するときには、単に$stateParamsを渡すだけで、そこに値があります。

コントローラを初期化する前にデータをロードする必要がある場合の2番目の方法は、経路にresolveを設定して、その状態をロードする前にAPIがヒットするようにすることです。この場合、既にページを読み込む前にコメントを2番目のコントローラに渡すことができます。

こちらがお役に立てば幸いです。

+0

同じ問題がまだあります。データは設定されていますが、getPropertyはデフォルトのnullを返します。 –

+0

あなたはplunkr/fiddleを投稿できますか? – panzhuli

+0

はこちらです:http://plnkr.co/edit/bSCBfN3SVrjGkAhgZWLz?p=preview –

関連する問題