查询一个async的多个Ember关系不会触发任何ajax请求
Querying an async has Many Ember realtionship doesn't trigger any ajax request.
标题不言自明但实际情况是,当我转到视图路由时没有Ajax请求
此外,使用chrome开发工具的ember检查器组件,在数据部分,消息模型有0项。
我有这些烬版本如下:
DEBUG: -------------------------------
DEBUG: Ember : 1.4.0
DEBUG: Ember Data : 1.0.0-beta.7.f87cba88
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery : 1.10.2
DEBUG: -------------------------------
在这段代码中,我使用fixture来表示从我的后端返回的json,但使用fixture或RESTadapter的结果是相同的。
App.Router.map(function() {
this.resource('threads', { path: '/' }, function() {
this.route('view', { path: ':thread_id' })
});
});
App.ApplicationAdapter = DS.FixtureAdapter.extend();
App.ThreadsRoute = Ember.Route.extend({
model: function() {
return this.store.find('thread');
}
});
App.ThreadsViewRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('thread', params.thread_id).get('messages');
}
});
App.Message = DS.Model.extend({
body: DS.attr('string'),
thread: DS.belongsTo('thread')
});
App.Thread = DS.Model.extend({
messages: DS.hasMany('message')
});
App.Thread.FIXTURES = [
{
id: 7,
messages: [1, 4, 7, 8]
}
];
App.Message.FIXTURES = [
{
id: 1,
body: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. A, voluptas, ducimus, temporibus neque adipisci culpa veniam nostrum harum voluptates impedit similique doloribus repudiandae suscipit atque vitae quisquam dolorum libero sequi?',
thread: 7
},
{
id: 4,
body: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. A, voluptas, ducimus, temporibus neque adipisci culpa veniam nostrum harum voluptates impedit similique doloribus repudiandae suscipit atque vitae quisquam dolorum libero sequi?',
thread: 7
},
{
id: 7,
body: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. A, voluptas, ducimus, temporibus neque adipisci culpa veniam nostrum harum voluptates impedit similique doloribus repudiandae suscipit atque vitae quisquam dolorum libero sequi?',
thread: 7
},
{
id: 8,
body: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. A, voluptas, ducimus, temporibus neque adipisci culpa veniam nostrum harum voluptates impedit similique doloribus repudiandae suscipit atque vitae quisquam dolorum libero sequi?',
thread: 7
}
];
fixture适配器不执行任何XHR请求,因为所有数据都已经在app/page中可用。
事实上,你没有看到烬检查员的任何记录,我看到的问题时,通过网络商店安装扩展,如果你不使用烬和烬数据的正确版本。我没有看到以下更新的jsbin有任何问题。
我已经更新了jsbin使它更符合习惯http://emberjs.jsbin.com/lukamuya/4
- 为了让你更容易使用Ember,你应该遵循命名约定(
ThreadsViewRoute
实际上是ThreadMessagesRoute
)。 嵌套资源没有按照您的方式实现。检查
this.resource('threads')
和this.resource('thread')
一个问题在你的JsBin,是你使用ThreadsView与url中的ID。由于您没有指定ThreadsViewController
, Ember认为您将返回单个对象,并使用Ember.ObjectController
而不是Ember.ArrayController
。在此路由的model
钩子中,您返回一个消息数组,这使Ember感到困惑。
另一个是store.find
返回一个promise。你不能写
store.find('thread', '7').get('messages')
,而是
store.find('thread', '7').then( function( thread) {
return thread.get('messages');
})
编辑:根据您的评论,我已经更新了JsBin http://emberjs.jsbin.com/lukamuya/9,以便/threads/1
显示线程1
的消息列表。
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 为什么不't CasperJS'sendAJAX函数为PUT请求发送任何内容
- 同步 Ajax 请求将导致页面上出现任何问题
- 在完成加载angular js Scope元素、Directives和Http请求后是否发生任何事件
- 有没有任何方法可以从javascript进行跨域请求,并访问它可能生成的错误响应类型(401404等)
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 是否有任何事件在浏览器请求另一个资源(如图像)之前触发
- 当用户在命令提示符中选择任何字符串时,节点Js不为任何请求提供服务
- 如何在URL中不指定.html、.json的情况下配置web.xml来服务任何请求
- 从浏览器发出HTTP请求,而不在请求标头中发送任何cookie
- jQuery,在任何请求之前对 ajax 请求的默认回调
- Ajax FormData 使用 POST 类型,但在 PHP 文件中无法获取任何请求
- HTML POST->重定向工作,XMLHTTPrequest->重定向不起作用(无法从null发出任何请求
- 使用纯javascript通过ws套接字代理任何请求
- xmlHttpRequest无法在javascript控制台中从null发出任何请求
- 使$httpBackend忽略对服务器的任何请求
- 我如何使用RxJs来阻止对AJAX调用的任何请求,直到前一个请求解决
- jQuery自动完成没有'不要发送任何请求
- CRM 2011通过XHR发送任何请求