Javascript 除非更改浏览器窗口,$apply在数组前加前缀,否则不会渲染ng repeat

Javascript 除非更改浏览器窗口,$apply在数组前加前缀,否则不会渲染ng repeat,javascript,angularjs,Javascript,Angularjs,我有一个sockjs服务,当它接收到来自服务器的消息时,$会广播一个事件。在这种情况下,它正在接收最新消息 在我的控制器中,我有以下代码: $scope.$on("link-created", function(event, data) { $scope.$apply(function() { var newNews = $.parseJSON(data); for(var i=0; i<newNews.length; i++) {

我有一个sockjs服务,当它接收到来自服务器的消息时,$会广播一个事件。在这种情况下,它正在接收最新消息

在我的控制器中,我有以下代码:

$scope.$on("link-created", function(event, data) {
    $scope.$apply(function() {
        var newNews = $.parseJSON(data);
        for(var i=0; i<newNews.length; i++) {        
                $scope.newsLinks.unshift(newNews[i]);  

        }
    });
});
$scope.$on(“链接已创建”),函数(事件、数据){
$scope.$apply(函数(){
var newNews=$.parseJSON(数据);

对于(var i=0;i这是因为我的代码中有一个相互冲突的指令。对此,我深表歉意,并正在进一步调查,以了解指令中具体是什么导致了此问题

编辑:

现在在我的指令中,这是因为我在观察窗户的高度和宽度。我仍在探索这是否是原因

var w = angular.element($window);
        scope.$watch(function () {
            return {
                'h': w.height(), 
                'w': w.width()
            };
        }, function (newValue, oldValue) {});

简化的反移位示例在这里起作用:,你在控制台上有错误吗?你能显示你的ng repeat html和
News
数据的示例吗?为什么在那里调用$apply?你如何发射/广播?我将html代码添加到编辑中。我在控制台中没有错误。我使用:$rootScope.$broadcast进行广播(“link created”,eventData);总之,我意识到这个错误是由充当容器的div中的自定义指令调用的。该指令干扰了渲染。我道歉
var w = angular.element($window);
        scope.$watch(function () {
            return {
                'h': w.height(), 
                'w': w.width()
            };
        }, function (newValue, oldValue) {});