2016-10-20 82 views
1

我有我的網頁上這樣的問題:angularjs NG-重複不顯示數據

app.controller('MessageController',['$http',function($http){ 
     http.get("DataManage.php?metodo=GetMessage") 
     .then(function(response){ 
     this.Message=response.data.records; 
     }); 


     this.ShowMyMessage=function(){ 
      console.log("Message"); 
      } 
    }]) 

的JSON是正確的到達,但如果我想顯示使用NG-重複沒有一個div裏面的值出現:

<div class="card-content Blue-text" ng-controller='MessageController'> 
      <li id="MessageBox" ng-repeat='msg in Message'> 
        <span>{{msg.Text}}</span></li> 
      </li> 
     </div> 

我檢查了很多時間的實施,但我找不到發生這種情況的原因。

+0

消息不應按照慣例大寫,並且應在'='周圍有空格。 *除非它在參數的函數定義中爲'(code ='good',starter = {})=> {body of body}'。但實際的問題是,你需要$ scope.messages(注意它的複數因爲它的數組)而不是this.Message(這是指控制器不是視圖html中使用的範圍)。 – Zargold

回答

1

看起來好像你試圖使用controllerAs模式。在這種情況下,您必須綁定您已經完成的控制器功能上下文中的所有變量(this)。但是您錯過了在ng-controller指令value內定義控制器別名,如ng-controller="MessageController as vm"

標記

<div class="card-content Blue-text" ng-controller="MessageController as vm"> 
    <li id="MessageBox" ng-repeat='msg in vm.Message'> 
     <span>{{msg.Text}}</span></li> 
    </li> 
</div> 

控制器

app.controller('MessageController', ['$http', function($http) { 
    var vm = this; //put this inside vm to avoid this related issue. 
    $http.get("DataManage.php?metodo=GetMessage") 
    .then(function(response) { 
     vm.Message = response.data.records; 
    } 
); 

    vm.ShowMyMessage = function() { 
    console.log("Message"); 
    } 
}]); 
+0

哦,這很容易,我在每一個控制器中都做到了,但不是在這個中,謝謝! – CodeAndCode

+0

你現在可以回答一個問題。謝謝 ;) –

0
變化

this.message$scope.message

app.controller('MessageController',['$http',function($http,$scope){ 
$http.get("DataManage.php?metodo=GetMessage") 
.then(function(response){ 
$scope.Message=response.data.records; 
}); 
0

使用的範圍可變。

app.controller('MessageController',['$http','$scope',function($http,$scope){ 

    $http.get("DataManage.php?metodo=GetMessage") 
.then(function(response){ 

$scope.Message=response.data.records; 


}); 



this.ShowMyMessage=function(){ 

     console.log("Message"); 

} 
}]);