如何通过绑定控制器变量访问服务的属性

时间:2016-01-12 21:35:14

标签: javascript angularjs variables

我试图通过模板中的绑定控制器变量访问服务的属性,但没有成功。

控制器:

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搜索没有返回任何有用的内容。

提前致谢!

1 个答案:

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