gpt4 book ai didi

javascript - Ember.js 路由器和动态段

转载 作者:行者123 更新时间:2023-11-29 17:22:09 24 4
gpt4 key购买 nike

我一直在使用Ember's Router (v1.0.pre) 具有单个动态片段并且非常满意。
如此多的魔法

但是,我正在为多个动态分割而苦苦挣扎:

  • serialize()/deserialize() 应该返回什么?
  • transitionTo() 调用和那里的上下文应该是什么样的?

有人可以阐明这一点吗?

最佳答案

  • serializedeserialize 只应在您的上下文对象具有自定义序列化时实现 (即不是 ember-data 模型实例)。因此,在使用完整的 ember 堆栈时,您不必实现这些方法。

  • transitionTo 应该从路由事件处理程序调用,上下文传递如下:

showPost: function (router, event) {
var post = event.context;
router.transitionTo('posts.show', post);
}

鉴于 showPost 事件已被 action 助手触发,如下所示:

{{#each post in controller}}
<a {{action showPost post}}>Show post {{post.title}}</a>
{{/each}}

通过多个上下文对象(对于深度嵌套的路由)可以实现更复杂的转换:

router.transitionTo('posts.member.comments.show', post, comment);

postcomment 上下文将被传递到适当的路由,而路由将下降到嵌套路由。


编辑

没有 ember-data,它看起来像:

posts: Ember.Route.extend({
route: 'posts',

member: Ember.Route.extend({
route: '/:post_id',

show: Ember.Route.extend({
route: '/'
}),

comments: Ember.Route.extend({
route: 'comments',

show: Ember.Route.extend({
route: '/:comment_id'
})
})
})
})

您将有两个类 App.PostApp.Comment,具有 find 类方法和 id 实例属性。

App.Post = Ember.Object.extend({
id: null
});
App.Post.reopenClass({
find: function (id) {
// retrieve data, instanciate & return a new Post
}
});

App.Comment = Ember.Object.extend({
id: null
});
App.Comment.reopenClass({
find: function (id) {
// retrieve data, instanciate & return a new Comment
}
});

关于javascript - Ember.js 路由器和动态段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com