我有一张像这样的背景表: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
包含正确的值。
任何?