我在用户通过身份验证时无法显示视图。为什么在评估为ng-show="vm.isLoggedIn"
时,简单的true
不会显示视图?
这是我的HTML
:
<div ng-show="vm.isLoggedIn">
<div ng-view></div>
</div>
这是我的控制器:
var MainCtrl = function(userAccount) {
var vm = this;
vm.isLoggedIn = false;
vm.userData = {
userName: "",
email: "",
password: "",
confirmPassword: ""
};
vm.login = function () {
vm.userData.grant_type = "password";
vm.userData.userName = vm.userData.email;
userAccount.login.loginUser(vm.userData, function (data) {
vm.isLoggedIn = true;
vm.message = "";
vm.password = "";
vm.token = data.access_token;
});
}
}
这是我创建的userAccount
服务。
var userAccount = function ($resource, appSettings) {
return {
registration: $resource(appSettings.serverPath + "/api/Account/Register", null,
{
"registerUser": { method: "POST" }
}),
login: $resource(appSettings.serverPath + "/Token", null,
{
"loginUser": {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
transformRequest: function (data, headersGetter) {
var str = [];
for (var d in data) {
str.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
}
return str.join("&");
}
}
})
}
}
我不认为它与MainCtrl
或userAccount
有关,但我将它们包含在上下文中。
ng-show
会阻止显示任何ng-view
吗?即使ng-show
评估为真?
答案 0 :(得分:1)
你可以使用ng-include和vm.isLoggedIn可以是url,当它不是false时会包含例子:
<button ng-click="vm.isLoggedIn=user==authenticated?'put url hier':false">Include</button>
<div ng-include="vm.isLoggedIn"></div>
答案 1 :(得分:1)
您需要检查两件事。
在你的HTML中确保你使用&#34;控制器作为&#34;符号和控制器命名为vm:
ng-controller =&#34; whateverCtrl as vm&#34;
如果你不这样做,那么vm.isLoggedIn无法正确评估。
即使这可能不是问题,我也会像这样编写一个标记检查:
<div ng-show="vm.isLoggedIn === true">
<div ng-view></div>
</div>