AngularJS:在模板中访问注入的控制器

时间:2014-05-06 11:21:23

标签: javascript angularjs

我有2个控制器,ItemControllerAuthenticationController

AuthenticationController被注入ItemController

ItemModule.controller('ItemController', function ($scope, AuthenticationController)

我现在正试图从模板中调用isLoggedIn()中的AuthenticationController函数。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

一种方法是将IsLoggedIn方法放在$scope上,如下所示:

$scope.isLoggedIn = AuthenticationController.isLoggedIn

您现在可以在模板中调用此功能

<span>Logged In: <strong>{{IsLoggedIn()}}</strong></span>

答案 1 :(得分:1)

我不确定注入控制器是否是一个好习惯,因为每个控制器应该专注于自己的部分。如果要在它们之间共享信息,则应使用服务。而不是注入控制器;你可以把它们嵌在你的前端。例如:

// js
app.controller('ParentController', function($scope) {
    $scope.person = {greeted: false};
});

app.controller('ChildController', function($scope) {
    $scope.sayHello = function() {
    $scope.person.name = "Ari Lerner";
    $scope.person.greeted = true;
    }
});

// html
<div ng-controller="ParentController">
    <div ng-controller="ChildController">
        <a ng-click="sayHello()">Say hello</a>
    </div>
    {{ person }}
</div>

// displayed:
{greeted:true, name: "Ari Lerner"}