代码之家  ›  专栏  ›  技术社区  ›  Tobi

ng重复无输出

  •  2
  • Tobi  · 技术社区  · 9 年前

    <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语句没有输出,因为我在“get_message_loop”中添加了if-else语句来检查是否有新消息。 在get_message_loop函数如下所示之前:

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

    而且一切都很好。

    你能告诉我为什么吗?

    提前谢谢你。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Tobi    9 年前

    我再说一遍:D,

    我解决了这个问题。我两次定义了控制器。一次在html标记中,另一次在routeprovider中。所以代码每件事都做了两次。

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

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