- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 Understanding Ember routes 的后续。
主/详细 View 很棒,但我试图在不嵌套模板的情况下创建一个分层 URL 路由。但是,对于面包屑链接和其他引用,我仍然需要访问父模型。
所以 /users/1/posts
应该显示用户 1 的帖子列表。而 /users/1/posts/1
应该显示用户 1 的帖子 1,但它不应该在 user
模板的 {{outlet}}
内呈现。相反,它应该完全替换 user
模板。但是,我仍然需要访问 post
模板中的当前用户,以便我可以链接回用户、显示用户名等。
首先我尝试了这样的事情(方法#1):
App.Router.map(function() {
this.resource('user', { path: '/users/:user_id' }, function() {
this.resource('posts', function() {
this.resource('post', { path: '/:post_id' });
});
});
});
...
App.PostRoute = Ember.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
},
renderTemplate: function() {
this.render('post', {
into: 'application'
});
}
});
user
替换了
post
模板。但是当我单击浏览器的后退按钮时,
user
模板不会再次呈现。显然 post View 被破坏但父 View 没有重新插入。这里有几个问题提到了这一点。
App.Router.map(function() {
this.resource('user', { path: '/users/:user_id' }, function() {
this.resource('posts');
this.resource('post', { path: '/users/:user_id/posts' }, function() {
this.resource('post.index', { path: '/:post_id' });
});
});
...
App.PostRoute = Ember.Route.extend({
model: function(params) {
return App.User.find(params.user_id);
},
setupController: function(controller, model) {
controller.set('user', model);
}
});
App.VideoIndexRoute = Ember.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
}
});
App.PostIndexController = Ember.ObjectController.extend({
needs: 'post'
});
User
中再次检索
PostRoute
并将其作为临时变量添加到
PostController
(如果路由正确嵌套,则不需要这样做,我可以在
needs: 'user'
中设置
PostController
属性)。此外,这可能会或可能不会对后端产生影响,具体取决于 ember-data 的适配器实现或用于从服务器检索数据的任何技术(即,它可能会导致不必要的第二次调用 load
User
) .
/users/:user_id/posts
在路由器配置中出现了两次(一个嵌套,一个不嵌套)。
App.Router.map(function() {
this.resource('users', { path: '/users/:user_id' }, function() {
this.resource('users.index', { path: '' }, function() {
this.resource('posts')
});
this.resource('post', { path: '/posts/:post_id' }, function() {
this.resource('comments', function() {
this.resource('comment', { path: '/:comment_id' });
});
});
});
});
posts
在
users
模板下渲染,但
post
替换了所有内容。
comments
然后在
post
和
comment
下渲染,依次在
comments
下渲染。
users
的子路由,因此所有用户模型都可以在没有杂技的情况下访问,只需在需要的每个 Route 中执行
this.modelFor('users')
即可。
users
|- posts
post
|- comments
|-comment
{ path: '' }
资源定义需要
users.index
但如果我把它拿出来,Ember 找不到
users
路由。我很想摆脱最后的痕迹。
最佳答案
您可以将父模板定义为仅显示 socket 并具有将在其中显示的索引路由。然后对于嵌套资源,您可以做同样的事情。
<script type="text/x-handlebars" data-template-name="user">
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="user/index">
<h2>user/index</h2>
</script>
<script type="text/x-handlebars" data-template-name="posts">
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="posts/index">
<h2>posts/index</h2>
</script>
App.Router.map(function() {
this.resource('user', function() {
this.resource('posts', function() { });
});
});
modelFor
.所以如果你在帖子里,你可以做
this.modelFor('user')
;
关于ember.js - 用于嵌套路由但非嵌套模板的惯用 Emberjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012806/
随着从 SproutCore 2.0 到 EmberJS 的迁移,有命名空间和 Github 存储库迁移。核心的东西好像移到了http://github.com/emberjs组织 Github 帐户
我有一条使用 ArrayController 来显示对象的路线。在执行某些操作后,使用 controller.clear() 和 controller.addObjects() 方法再次填充数组。我需
我有一个在 Ember 中创建的自定义 View 。我真的很喜欢 {{yield}} helper 让我控制三明治的“面包”。但是,我现在想要做的是创建一个“双层”三明治,并有一个超过 1 个产量的
过去 6 个月我正在开发一个 Emberjs 组件。 当我尝试开发表格组件时,我开始遇到第一个性能问题。此表中的每个单元格都是 Ember.View,并且每个单元格都绑定(bind)到对象属性。当表格
我有一个名为 docTemplateID 的变量/操作。docTemplateID 的值可以是 1 或 2单击按钮 1 设置 docTemplateID = 1。单击“提交”按钮将使用新值创建 doc
我正在尝试编写一个小 Action 来搜索数据存储,顺便说一下,数据存储中已经加载了数据。我希望能够通过字符串(即名字)进行搜索。 这是我到目前为止的代码示例。 this.get() 正在从搜索表单中
我正在尝试在注册表单上创建提交操作。这是我的寄存器 handle : {{input class="form-control" value=username type="text" pl
我有一个我认为相当正常的 JSON 响应: "data": { ..... "user": { "name": "John", "surname": "Doe" } .
如何定义仅在按下特定修饰键时调用的操作(单击时)? allowedKeys当没有按下修饰键时也会执行该操作。 最佳答案 一种方法就是做 my item 在你的 Controller /父组件中
所以,这基本上就是我想要的。但我需要获取可以在 ember 检查器中看到的当前路径,但如何在组件中获取它?或者有更好的方法来做到这一点吗?也许是一项服务? import Ember from 'emb
我只是想循环遍历我生成的一些虚拟数据,这样我就可以设置网站的样式,我的路由器中有这个: import Ember from 'ember'; export default Ember.Route.ex
这就是我所拥有的。 2 种模型:“注释”和“用户”。注释有一个名为“用户”的字段,它使“1 个用户对应多个注释”进行复制。数据取自 Mirage。 备注型号: export default DS.Mo
我尝试复制搜索字段,就像它们在 emberjs.com 处显示的那样。但是由于某种原因,当输入查询并按 Enter 或单击提交按钮时,我的代码不断产生以下错误(在 google chrome 中):
我正在测试过滤器内容,仅显示 X 个结果,我必须使用计数器来执行此操作,因为适配器如何返回数据。 http://jsfiddle.net/eAvET/ 当您加载此修改后的示例时,显示 0 数据,但是当
我的应用程序有一个名为 Balance 的模型,我们可以在其中添加金额和说明。我创建了一个操作,当您单击按钮时添加一些余额记录,到目前为止效果很好。问题是我创建了一个名为“totalBalance”的
我正在使用 ember 的查询参数按布局类型过滤结果列表。我想检查指定的查询是否在 availableLayouts 中。我知道我可以检查该值是否在此数组中,但我不确定 ember 在什么时候设置“布
我有一段数据(对象),它从服务器端脚本打印为全局变量。 user = { id : 1, name: 'foo', avatar : 'http://foo.com/avatar.jpg'} 整个应用
我正在使用 Ember 构建一个单页音乐网络应用程序。每个轨道在页面上都表示为一个组件。给定页面上有许多轨道。当用户单击播放时,组件会更新其 UI 以反射(reflect)这一点,并且主路由会跟踪当前
我想将社交分享按钮(fb、twitter、vk)添加到我的 Ember 应用程序中。我找到了一些库并集成了它们,但它们有一个重要的限制。社交网络使用其机器人抓取共享页面,并从页面中检索特定的元属性。但
我试图用easyForm预选一个选择框。 https://github.com/dockyard/ember-easyForm 我做了一个JsBin:http://emberjs.jsbin.com/
我是一名优秀的程序员,十分优秀!