0

我认为我有一个基本问题,即理解如何以视图形式访问其他控制器中的变量。

我多次阅读 Ember 文档和“数百个”博客条目,但我没有找到解决方案。

提交登录表单后,我想从 Auth Controller / Model 设置 var "isLoggedIn" 并将其输出到登录视图中。稍后将在许多其他组件中使用 Auth,这就是为什么我想将其与 Login 分开。

这是我的代码的一小部分:

模板:登录

Authenticated: {{controllers.auth.isLoggedIn}} <--- after Login this should be TRUE, but how ?
...LoginForm: here is the login form with input fields (email and password)...

控制器:登录

var LoginController = Ember.Controller.extend({
  needs: "auth",
  // LoginForm Submit-Event
  login: function() {
    App.Login.createRecord(this.getProperties("email", "password"));
    DS.defaultStore.commit(); // on server respond, id of model.login is changed, see "idObserver"
  }
});

型号:登录

var Login = DS.Model.extend({
  email     : DS.attr("string"),
  password  : DS.attr("string"),
  // Because of Ember Bug i have to use idObserver after "DS.defaultStore.commit()"
  // to get the ID responded from the server.
  idObserver: function() {
    var auth = App.Auth.create();
    auth.set("id", this.get("id"));
  }.observes("id")
});

控制器:身份验证

var AuthController = Ember.Controller.extend({
  isLoggedIn: false // What should i write here to connect to isLoggedIn of Auth.Model ???
}); // Controller

型号:认证

var Auth = Ember.Object.extend({
  isLoggedIn: DS.attr("boolean"),
  idObserver: function() {
    if(this.get("id")) this.set("isLoggedIn", true);
    else this.set("isLoggedIn", false);
  }.observes("id")
});

如何在登录模板中输出“controllers.auth.isLoggedIn”?

4

1 回答 1

1

通常,auth 模型的实例将在您的 auth 控制器的 content 属性上设置(通常由路由器处理)。设置内容后,您的模板无需修改即可使用。

这个要点可能会对您有所帮助,因为它是使用路由器的登录示例:

https://gist.github.com/machty/5647589

于 2013-07-23T18:23:18.317 回答