【发布时间】:2014-02-24 23:46:21
【问题描述】:
我可能做错了,但这里是:我从服务器获取用户,一旦解决,我试图将用户名呈现到页面。登录表单其实就是基于这个的弹窗:http://www.sociallipstick.com/?p=86
不幸的是,当我将userLoggedIn 设置为true 时,模板根本没有改变。我做错了吗?
App.UserController = Ember.Controller.extend({
userLoggedIn: false,
actions: {
displayLoginForm: function () {
//displays a login form
},
recieveLogin: function (authResult) {
//hides login form
var userPromise = this.store.find('user', authResult); // successfully gets user from server (as far as I can tell)
var self = this;
userPromise.then(function (user) {
self.set('model', user);
self.set('userLoggedIn', true);
});
}
}
});
<li class="navbar-form">
{{#if userLoggedIn}}
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">My quizzes</a></li>
<li><a href="#">My scores</a></li>
<li><a href="#">Settings</a></li>
<li class="divider"></li>
<li><a href="#">Logout</a></li>
</ul>
{{else}}
<button class="btn btn-default" {{action 'displayLoginForm'}}>Login</button>
{{/if}}
</li>
【问题讨论】:
-
代码看起来不错,你可以发送一个 jsbin 来重现这个问题吗?
-
我在想的是导航栏可能绑定到不同的控制器...
userLoggedIn默认为未定义(如果绑定到另一个控制器),在#if中评估为 false陈述。您可以添加{{debugger}}并检查 content 属性以查看它是否绑定到正确的控制器。 -
谢谢!原来它在 MWE 中工作,所以我发现错误在其他地方......
-
有趣,所以最后它确实是一个不同的控制器。这是一个随机的猜测,我很高兴这有帮助。
标签: javascript ember.js ember-data ember-controllers