$ scope。$ emit with partials

时间:2014-09-16 12:47:00

标签: angularjs angularjs-scope

我的 domain.tld / login 是index.html中包含的部分( login.html )。

index.html ng-include是基于ng-if属性可见的部分内容。

一旦用户通过身份验证,我们的想法是将ng-if条件评估为true。

要实现这一目标,我希望来自$scope.$emit的{​​{1}},其范围 似乎)是{{1}的孩子范围。

问题是:LoginCtrl'没有加载/执行。这是路线:

IndexCtrl

LoginCtrl的内容如下:

.when('/login', {
      templateUrl: 'login.html',
      controller: 'LoginCtrl'
    })

即使在LoginCtrl中,angular.module('myApp') .controller('LoginCtrl', function ($scope) { console.log("LoginCtrl"); $scope.$emit('authEvent'); }); 的听众也是:

$scope.$emit

“LoginCtrl”消息永远不会记录到控制台。在 domain.tld / login 页面的加载中,仅记录“IndexCtrl”。单击“登录”按钮,然后继续执行 domain.tld / users 页面,将以下内容记录到控制台:

IndexCtrl

index.html 简化:

angular.module('myApp')
    .controller('IndexCtrl', function ($scope) {
    console.log("IndexCtrl");
        $scope.$on('authEvent', function(event) {
            console.log("Emit received");
            $scope.authenticated = "true";
        });
    }); 

虚拟IndexCtrl index.js:14 UserStatsCtrl users.js:24 Emit received 事件从/ login页面后面的部分控制器发出,例如 domain.tld / users 。但是,我希望在<body data-ng-controller="IndexCtrl"> <aside ng-if="authenticated" id="left-panel" ng-cloak> <span ng-include="'left-panel.html'"></span></aside> <div id="content" data-ng-view="" class="view-animate"></div> </body> 之内完成所有身份验证业务,然后才能访问/呈现给用户任何其他部分内容。

谢谢。

UPDATE:

我直接在 login.html 部分内有一个$scope.$emit代码段;验证输入字段的用户提供的数据。当注释掉LoginCtrl时,控制器工作,并将以下内容记录到控制台:

<script>

<script>的内容现在将成为IndexCtrl index.js:14 LoginCtrl login.js:12 Emit received index.js:16 的一部分。

Gracias和Entschuldigung。

0 个答案:

没有答案