我希望使用Backbone js从此API http://demo82.com/lois/api/get_page/?id=6
获取价值。我试过,但我不知道如何从骨干中的对象获取值。
这是我的Backbone代码
Page = Backbone.Model.extend({
initialize: function() {
this.on('all', function() { console.log(this.get('page')); });
},
url: "http://demo82.com/lois/api/get_page/?id=6",
defaults: {
"id":null,
"title":"",
"content":""
}
});
var page = new Page();
console.log(page.fetch({}));
我是新手,并尝试学习backbonejs请解释什么是更好的方法?请使用jsfiddle.net
给我回复。
感谢
答案 0 :(得分:0)
id
总是6岁吗?在你的代码中,你的模型总是得到第六件事。如果您想要一个带有get参数的自定义网址,请将url
覆盖为函数:
url: function() {
id = this.get("id");
return "loispage/api/get_page/?id=" + id
}
更好的是,如果您可以控制服务器端并且可以使用页面实体执行更多RESTful - 只需设置urlRoot
urlRoot: "loispage/api/page/"
并且fetch将自动从
进行HTTP get "http://.../loispage/api/page/<id>
答案 1 :(得分:0)
它看起来像是一个上下文问题(this
没有引用on
的回调中的模型)。您可以通过指定上下文来解决此问题:
this.on('all',
function() { console.log(this.get('pagel')); },
this
);
修改强>
还存在跨域问题。您需要通过覆盖 sync 和解析来使用JSONP请求。 (I adapted the following code from this example.)
var Page= Backbone.Model.extend({
// override backbone synch to force a jsonp call
sync: function(method, model, options) {
// Default JSON-request options.
var params = _.extend({
type: 'GET',
dataType: 'jsonp',
url: model.url(),
processData: false
}, options);
// Make the request.
return $.ajax(params);
},
parse: function(response) {
// parse can be invoked for fetch and save, in case of save it can be undefined so check before using
if (response) {
console.log(JSON.stringify(response));
// here you write code to parse the model data returned and return it as a js object
// of attributeName: attributeValue
return { status: response.status }; // just an example
}
},