很抱歉问这样一个简单的问题,但我正在考虑从 jQuery 迁移到 Ember,并试图在不使用 ember-data 的情况下找出调用/响应 json。我的一个问题是人们如何建议使用类方法。举例来说,我有一个像这样的帖子对象:
Hex.Post = Ember.Object.extend({
id: null,
body: null
});
合理的 findById 看起来像这样吗?
$(document).ready(function(){
Hex.Post.findById=function(id){
console.log("you are here");
$.getJSON("/arc/v1/api/post/" + id, function(data){
var post = Hex.Post.create();
post.set('id', data.id);
post.set('body',data.body);
return post;
});
};
});
或者这对于创建 findById 类方法来说是错误的?
当我从 chrome 控制台运行此命令时,即使 JSON 调用在浏览器中运行良好,它也会返回为未定义。我究竟做错了什么?
thx
从 Chrome 控制台:
您想要在类上定义它,并返回 ajax 调用,这就是一个承诺
Hex.Post = Ember.Object.extend({
id: null,
body: null
});
Hex.Post.reopenClass({
findById: function(id) {
return Ember.$.getJSON("/arc/v1/api/post/" + id).then(function(data){
var post = Hex.Post.create();
post.set('id', data.id);
post.set('body',data.body);
return post;
});
}
});
使用承诺
通过模型钩子,Ember 将为您解决承诺,例如下面的例子
Hex.PostRoute = Em.Route.extend({
model: function(param){
return Hex.Post.findById(param.id);
}
});
正如承诺
Hex.Post.findById(42).then(function(record){
console.log(record);
});
or
var promise = Hex.Post.findById(42);
promise.then(function(record){
console.log(record);
});
这是一个简单的例子:
http://emberjs.jsbin.com/OxIDiVU/21/edit http://emberjs.jsbin.com/OxIDiVU/21/edit
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)