我有两个关于Ember Handlebars的问题:
1-我有一个输入助手,我想在点击这样的按钮时禁用它:
<div class="input-group">
<span class="input-group-addon">Email</span>
{{input type="text" class="form-control account-input" value=email placeholder="Email" disabled=isDisabled}}
</div>
App.AccountController = Ember.ArrayController.extend({
isDisabled: true,
actions: {
accountUpdate: function() {
this.setProperties({isDisabled: false});
}
}
});
<button type="button" class="btn btn-success btn-block" {{action "accountUpdate"}}>Update</button>
但问题是我的输入总是启用...我这样做错了吗?
2-这很可能与第一个相同。我的应用程序模板中有一个导航栏,我在其中放置了一些按钮,如注销,帐户等。 但是当用户没有登录我的应用程序时,我想隐藏它。
<nav class="navbar navbar-inverse navbar-collapse" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" href="">MDF App</a>
</div>
{{#if isAuthenticated}}
<button type="button" class="btn btn-default navbar-btn" {{action "home"}}>Homepage</button>
<button type="button" class="btn btn-primary navbar-btn" {{action "accountManager"}}>Account</button>
<button type="button" class="btn btn-danger navbar-btn navbar-right" {{action "logout"}}>Log out</button>
{{/if}}
</nav>
在我的ApplicationController中:
App.AuthManager = Ember.Object.extend({
isAuthenticated: function() {
Ember.$
.get(host + '/session', function(data) {
console.log('DEBUG: isAuthenticated OK');
return true;
})
.fail(function() {
console.log('DEBUG: isAuthenticated FAIL');
return false;
});
}
});
App.ApplicationController = Ember.Controller.extend({
isAuthenticated: function() {
return App.AuthManager.isAuthenticated();
}
});
我的问题是我的isAuthenticated没有被触发,我想我可以像这样给我的模板返回一个值。我应该用其他方式吗?
我已将导航栏放在标签中。
答案 0 :(得分:1)
你必须使它成为一个计算属性,而不仅仅是一个函数。
isAuthenticated: function() {
return App.AuthManager.isAuthenticated();
}.property()
请注意,当App.AuthManager.isAuthenticated()
的值发生变化时,这不会自动更新。您必须自己触发更新。