使用Backbonejs从对象获取值

时间:2012-10-30 21:27:50

标签: javascript jquery backbone.js underscore.js

我希望使用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给我回复。 感谢

2 个答案:

答案 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
    }
},

Here's a JSFiddle demo.