ng-repeat没有输出

时间:2016-09-28 11:06:12

标签: angularjs ng-repeat

我对此ng-repeat语句有疑问。

<div ng-repeat="m in mbct.messages track by $index" ng-click="mbct.message_click($index)" ng-class="mbct.set_class(m.gelesen)">
        <div>ABS: <span ng-bind="m.abs"></span> </div>
        <div>Betreff: <span ng-bind="m.betreff"></span> </div>
        <div>Wann: <span ng-bind="m.timestamp"></span> </div>
        <hr>
    </div>

控制器:

var self = this;

self.messages = [];
self.massages_length = "";

//initialize variables when app starts
self.init = function(){
    alert("Init-runs");
    MessageService.get_messanges().then(
        function(response){
            self.messages = response.data;
            self.messages_length = self.messages.length;
            console.log(self.messages_length);
        }
    )
};

self.get_message_loop = $interval(function(){
    MessageService.get_messanges().then(
        function(response) {
            if(self.messages_length < response.data.length){
                console.log("new message");
                self.messages = response.data;
                self.messages_length = self.messages.length;
                console.log("self.messages_length:" + self.messages_length);
            }
            else{
                console.log("no new message");
            }
        }
    );
},500);

我的服务:

gsgmain.factory('MessageService',['$http',function($http){
return{
    get_messanges : function(){
        var email = $("#php_username").html();
    var data = {user_email: email, methode: "get_all_msg"};
    var json_data = angular.toJson(data);
    return $http.post("php/server.php", json_data);
},
    send_message : function(abs,emp,message_text,betreff){
        var data = {abs:abs, emp: emp, message: message_text,betreff:betreff,methode:"send_message"};
        var json_data = angular.toJson(data);
        return $http.post("php/server.php",json_data);
    },
    set_read: function(msg_id){
        var data = {msg_id: msg_id,methode: "set_read"};
        var json_data = angular.toJson(data);
        return $http.post("php/server.php",json_data);
    }
}
}]);

ng-repeat-statement没有输出,因为我在“get_message_loop”中添加了if-else-statement以检查是否有新消息。 在get_message_loop函数看起来像这样之前:

self.get_message_loop = $interval(function(){
    MessageService.get_messanges().then(
        function(response) {
            self.messages = response.data;
        }
    );
},500);

并且一切正常。

你能告诉我为什么吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

我又来了:D,

我解决了问题。我定义了控制器两次。一次在html-tag中,另一次在我的routeprovider中。所以代码完成了两次。

总是在第二次运行中,变量self.messages_length未定义。

我删除了一个定义,现在一切正常;)