Emberjs将值归属于车把

时间:2014-03-11 13:20:12

标签: ember.js handlebars.js

我有两个关于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没有被触发,我想我可以像这样给我的模板返回一个值。我应该用其他方式吗?

我已将导航栏放在标签中。

1 个答案:

答案 0 :(得分:1)

你必须使它成为一个计算属性,而不仅仅是一个函数。

isAuthenticated: function() {
    return App.AuthManager.isAuthenticated();
}.property()

请注意,当App.AuthManager.isAuthenticated()的值发生变化时,这不会自动更新。您必须自己触发更新。