Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新$rootScope.$broadcast_Javascript_Angularjs_Rootscope - Fatal编程技术网

Javascript 更新$rootScope.$broadcast

Javascript 更新$rootScope.$broadcast,javascript,angularjs,rootscope,Javascript,Angularjs,Rootscope,如何使用新值更新$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}})

如何使用新值更新$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)进行更新,但它没有打印出来。

这是代码的简化版本

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

它可以打印出mapInfo

您的代码中有输入错误。您的
else
块应该调用
$rootScope.$broadcast
。您从
$broadcast
@mbcrute中省略了$T:对不起,我在这里错过了它,但我的代码中有它。所以它还是不起作用。@mbcrute:还有其他想法吗?是什么触发了这个代码?@Brocco:哪个代码?:)