我的 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>
之内完成所有身份验证业务,然后才能访问/呈现给用户任何其他部分内容。
谢谢。
我直接在 login.html 部分内有一个$scope.$emit
代码段;验证输入字段的用户提供的数据。当注释掉LoginCtrl
时,控制器工作,并将以下内容记录到控制台:
<script>
<script>
的内容现在将成为IndexCtrl index.js:14
LoginCtrl login.js:12
Emit received index.js:16
的一部分。
Gracias和Entschuldigung。