在Ember中的嵌套模板中显示ApplicationController的模型
Display model of ApplicationController in a nested template in Ember
我想在登录后显示用户的用户配置文件。所以我想让Application.Controller成为ObjectController,并将其模型属性设置为用户对象。我现在遇到的问题是,我不知道如何在嵌套的配置文件模板中显示用户属性?事实上,我在SO上看到了其他答案,使用了App.todosController.content}}中的{#each-todo。但这只适用于ArrayController。也许这只有使用ArrayController才能实现,我真的不知道,但这会很奇怪。谢谢你的帮助!
为了测试这一点,我将Application.Controller的模型设置为登录成功时的用户对象。这是我的代码:
<script type="text/x-handlebars" id="profile">
<div class="content">
<div class="content-padded">
<div>
<p><h3>Username: {{{user.username}}}</h3><p>
<p>trials: {{user.trials}}</p>
<p>results: {{user.results}}</p>
<p>email: {{user.email}}</p>
</div>
</div>
</div>
</script>
App.Router.map(function() {
this.resource('signup');
this.resource('login');
this.resource('profile');
this.resource('practice');
this.resource('overview');
});
App.LoginController = Ember.ObjectController.extend({
model: {},
needs: ['application'],
loggedInUser: {id: 9,
username: "rooty",
trials: "fghsds",
results: "fdfsd",
email: "dsefs@ds.com"},
loginHandler: function(data) {
// sign in logic
this.set("controllers.application.isLoggedIn", true);
this.set("controllers.application.model", loggedInUser);
}
});
App.ApplicationController = Ember.ObjectController.extend({
isLoggedIn: false
});
用户对象如下所示:
User {id: 9,
username: "rooty",
trials: "fghsds",
results: "fdfsd",
email: "dsefs@ds.com"}
你太接近了!因此,您的登录控制器会在应用程序控制器上设置模型。您的控制器的登录控制器的needs
属性意味着应用程序控制器作用域上的所有属性都可用于您的登录控制器。按照这个逻辑,你的配置文件控制器不能也是needs: ['application']
吗?
只要做一点工作,我们就可以从您的配置文件控制器中调用推荐用户:
needs: ['application'],
users: Ember.computed.alias('controllers.application.model')
然后在你的配置文件模板中,你已经拥有的应该可以使用:
<div>
<p><h3>Username: {{{user.username}}}</h3><p>
<p>trials: {{user.trials}}</p>
<p>results: {{user.results}}</p>
<p>email: {{user.email}}</p>
</div>
JSBin
请注意,在JSBin中,在索引控制器上,我有一个应用程序模型的计算别名。索引模板中输入助手的值绑定到这个计算的别名,也就是应用程序的模型。在应用程序模板中观察到,我只使用{{model}}
。当您输入输入时,您会看到由于Ember强大的绑定,模型发生了变化,因此我们通过needs
和计算的别名确定了应用程序模型的目标。
配置文件模板也是如此。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 角度图表;t显示在我的页面中
- 在jquery中为显示/隐藏设置cookie