2016-11-25 6 views
1

私はstackoverflowで見つかったサンプルを試しましたが、私はまだ何も表示されません。私はコンソールのarticleIdsを見ることができますが、ビューには何も表示されません。あなたの助けをあらかじめありがとう。ここでanglejsで表示するために約束データをバインドできません

は私のコントローラである:ここでは

export class MainController { 
    constructor ($http) { 
     'ngInject'; 

     this.$http= $http; 
     this.apiHost = 'http://localhost:5005/api/articles'; 
     this.getArticles(); 
    } 

    getArticles() { 
     var vm = this; 
     this.$http.get(this.apiHost).then(function(result){ 
      vm.articles = result.data; 
      vm.articles.forEach(function(item){ 
       console.log(item.articleId); 
      });  
     }); 
    } 
} 

私の見解:

<div class="form-group"> 
    <label for="resumeId">Select article:</label> 
    <select class="form-control" id="resumeId"> 
    <option ng-repeat="item in main.vm.articles" value="{{item.articleId}}">{{item.articleId }}</option> 
    </select></div> 
+0

私はルートの利用controllerAsのでmain.vm.articlesを追加:「メイン」 – Fred

+0

あなたが '' NG・リピート=「記事の項目を」試したことがありますか?私はそれがうまくいくと私が知ることができるから。 – MeterLongCat

+0

ありがとうございました! ng-repeat = "main.articlesの項目"は機能します – Fred

答えて

1

これはHTMLだけで間違った範囲を参照する約束、とは何の関係もありません。 $のHTTPコールバックでは、そうarticlesmain.articlesはなくmain.vm.articlesで利用できる、(vmは、コントローラのスコープです)vm.articlesに結果を割り当てます。

ng-repeatng-repeat="item in main.articles"に変更すると動作します。

+0

ない(VMは==この)、ちょうど – Fred

+0

は私が説明しようとしていたことは 'vm'は、コントローラのスコープであるということです「main.articlesの項目」=リピートngのようにコードを変更します。これを改善するための質問を更新しました。 – MeterLongCat

関連する問題