0

如何使用新值更新 $rootScope.$broadcast?

考虑这段代码:

var test = "fisk";

if(angular.element(this).hasClass('monster')) {
    var monster_info = angular.element(this).find("img").attr("title");
    $http.get("lib/terrain.php", {params: { monster_data:monster_info}}).success(function(data) {
            console.log(data);
            $rootScope.$broadcast('mapInfo', data);
    });
} else {
  $rootScope.$broadcast('mapInfo',test);
}

这是我的控制器:

$scope.$on('mapInfo', function(event, mapInfo) {
    $scope.mapInfo = mapInfo;
    console.log($scope.mapInfo);
});

这是我的html:

<div ng-bind-html="safeHtml(mapInfo)"></div>

这几乎可以工作。当我进行 ajax 调用时,mapInfo 会更新并在页面上打印出数据。但是当我不进行 ajax 调用时,fish 的值不会在页面上打印出来。我可以看到 $rootScope 正在被值 fisk:console.log($scope.mapInfo) 更新,但它没有被打印出来。

4

1 回答 1

0

这是您的代码的简化版本

`http://jsfiddle.net/HB7LU/5693/`

它可以打印出mapInfo

于 2014-08-26T17:44:16.647 回答