更改$ rootScope中的值

时间:2014-08-27 08:14:17

标签: javascript angularjs dom

我有一张像这样的背景表:http://ast-ss.se/terrain/

只需单击它们即可浏览框。我还实现了在地图上生成随机怪物黑点的功能。你可以导航到盒子并挑战怪物。

当我点击一个带有怪物的盒子时,我会得到怪物的规格,杠杆,力量等等。

以下是我的指令中的代码段:

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);                     
    });
} 

如您所见,我正在使用$rootScope.$broadcast。这是我在控制器中所做的事情:

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

这是我的HTML:

<div id="leftcontent_top">
    <ul>
        <li><a href="#">Vildmarken</a></li>
        <li> | </li>
        <li><a href="#">Marknaden</a></li>
        <li> | </li>
        <li><a href="#">Värdshuset</a></li>
    </ul>
</div>
<div ng-bind-html="safeHtml(mapInfo)"></div>
<div ng-if="challengeMonster"><input type="submit" ng-click="doChallenge()" value="Utmana"></div>

这很好用。有关怪物的信息将打印在页面上。但是,当你在没有怪物的盒子里时,我想显示你所在盒子的信息。每当你导航到一个新盒子时,我想打印出关于那个盒子的信息。我试过这样的:

指令:

angular.element('.click').click(function() {
    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
    {
        test = angular.element(this).attr('id');
        $rootScope.$broadcast('mapInfo', test);
        angular.element('.click.dotted').empty();
        angular.element('.click.dotted').removeClass('dotted');

        if(!angular.element(this).hasClass('dotted'))
        {
            $rootScope.$broadcast('mapInfo', test);
            angular.element(this).addClass('dotted');
            angular.element(this).html($('<img src="images/dot.png">'));
        }
    }
});

正如您所看到的,我有$broadcast的else语句,但test的值未在页面上打印出来。但是如果我点击一个带有怪物的盒子,就会打印出信息,但是如果我点击一个空盒子,则不会打印出任何内容。正如您在控制器中看到的那样,我运行console.log($scope.mapInfo),我可以看到$scope.mapInfo包含正确的值。

任何?

0 个答案:

没有答案