Javascript 向布局传递变量

Javascript 向布局传递变量,javascript,layout,ember.js,Javascript,Layout,Ember.js,我有一个非常基本的测试应用程序。它有两个页面,一个空索引,另一个页面上有一个登录表单。我想知道如何将变量传递给布局,每个页面上都是相同的(用户名/状态用于显示它,显示登录/注销状态) 或者最好的解决方案可能是这样的:将用户模型传递给AppController,它可以从任何地方(如登录页面或登录模式)获得,如果我更改并保存数据,则站点模板只是通过传递的变量进行更改 我试图找到一个好方法,我找到了一些,但没有一个有效:(如果你知道一个有效的方法,请与我分享或告诉我什么是解决方案 以下是我的代码:我拥

我有一个非常基本的测试应用程序。它有两个页面,一个空索引,另一个页面上有一个登录表单。我想知道如何将变量传递给布局,每个页面上都是相同的(用户名/状态用于显示它,显示登录/注销状态)

或者最好的解决方案可能是这样的:将用户模型传递给AppController,它可以从任何地方(如登录页面或登录模式)获得,如果我更改并保存数据,则站点模板只是通过传递的变量进行更改

我试图找到一个好方法,我找到了一些,但没有一个有效:(如果你知道一个有效的方法,请与我分享或告诉我什么是解决方案

以下是我的代码:我拥有的JS:

App = Ember.Application.create();

App.ApplicationController = Ember.Controller.extend({});


/* *** Index *** */
App.IndexView = Ember.View.extend({
    layoutName: 'app_view'
});

App.IndexController = Ember.Controller.extend({
});


/* *** LOGIN *** */
App.Router.map(function () {
    this.resource("login");
});
App.LoginView = Ember.View.extend({
    layoutName: 'app_view'
});
App.LoginController = Ember.Controller.extend({
    login: function() {
        // blah blah
    }
});
布局模板:

<script type="text/x-handlebars" data-template-name="app_view">
    <header id="site">
        {{#link-to "index"}}Index{{/link-to}}
        {{#link-to "login"}}Login{{/link-to}}
        {{variablaWhatIWant}}
    </header>
    <hr />
    <section id="content">
        {{yield}}
    </section>
    <hr />
    <footer id="main">
        Footer
    </footer>
</script>

{{{链接到“索引”}索引{{/链接到}
{{{链接到“登录”}登录{{/链接到}
{{variablaWhatIWant}

{{yield}}
页脚
2个视图模板:

<script type="text/x-handlebars" data-template-name="index">
    Hello INDEX page!
</script>
<script type="text/x-handlebars" data-template-name="login">
    <form class="form-horizontal" {{action "login" on="submit"}}>
        <div class="control-group">
            Username: {{input value=username type="text"}}
        </div>
        <div class="control-group">
            Password {{input value=password type="password"}}
        </div>
        <button type="submit" class="btn">Log in!</button>
    </form>
</script>

你好,索引页!
用户名:{{input value=Username type=“text”}
密码{{input value=Password type=“Password”}
登录

非常感谢!:)

如果您的想法正确,请参阅管理控制器之间的依赖关系

只需设置needs属性,就可以从任何其他位置访问该控制器

App.LoginController = Ember.Controller.extend({
    needs: ['application'],
    login: function() {
        this.authenticate(this.get('username'), this.get('password')).then(function(user) {
             this.set('controllers.application.user', user);
        },
        function(err) {
             //auth err
        }
    }
});

是的,我得到了这个部分,但是如果我向applicationcontroller添加一个变量variablawatiwant:“qwe”,它将在布局模板中不可见。因此,基本上我想向模板中可用的ApplicationCtrl添加一个默认值,稍后如果我更改它,模板将自动更改。@KrizsánBalazs您可以通过
{controllers.application.variablawattiwant}访问控制器
需要的任何模板中的属性:['application']
}
所有绑定都将正常工作。