我认为我有一个基本的问题,即理解如何在View中从其他控制器访问vars。
我多次阅读Ember-Documentation和“数百个”Blog-Entries,但我找不到解决方案。
提交Loginform后,我想从Auth Controller / Model中设置var“isLoggedIn”并在Login View中输出。稍后将从许多其他组件使用Auth,这就是为什么我想从登录中分离它。
以下是我的代码的一小部分:
模板:登录
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
型号:Auth
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”?
答案 0 :(得分:1)
通常,auth模型的实例将在auth控制器的content属性上设置(通常由路由器处理)。设置内容后,您的模板无需修改即可使用。
这个要点可能会帮助你像使用路由器的登录示例一样: