我试图通过模板中的绑定控制器变量访问服务的属性,但没有成功。
控制器:
app.controller('VictoryController', function($scope, AlertStatisticsService) {
$scope.AlertStats = AlertStatisticsService;
});
Service返回一个结构如下的对象:
factory = {
factionWins = {
vs: 123,
nc: 123,
tr: 123
}
}
模板呈现为Attribute指令的一部分:
app.directive('homeVictoryCard', function() {
return {
restrict: 'A',
replace: true,
scope : {
empire: '@',
},
templateUrl: 'views/home/partials/victory.card.html'
};
});
以下HTML元素调用:
<div home-victory-card empire="vs"></div>
在相关模板中,我试图通过empire
变量访问控制器/服务的对象数据,该变量在模板的范围内,如下所示:
{{ AlertStats.factionWins[empire] }}
我也尝试在各种ng-hide和ng-shows中使用它,例如:
ng-hide="AlertStats.factionWins[empire] > 0"
在Twig中,我曾使用attribute(AlertStats.factionWins, empire)
来获取信息,但我不知道如何在Angular中执行此操作,并且Google搜索没有返回任何有用的内容。
提前致谢!
答案 0 :(得分:1)
由于您具有隔离范围的指令,因此它不会从父控制器继承范围,因此AlertStats
不在指令范围内
您可以将工厂注入指令或将另一个范围变量作为属性传递给指令
注入工厂的示例
app.directive('homeVictoryCard', function(AlertStatisticsService) {
return {
restrict: 'A',
replace: true,
scope : {
empire: '@',
},
templateUrl: 'views/home/partials/victory.card.html',
link:function(scope){
scope.AlertStats = AlertStatisticsService
}
};
});