Backbone:没有数据添加到fetch()上的模型

Mar*_*son 2 javascript codeigniter backbone.js

当我尝试从服务器获取数据到我的Backbone模型时,我遇到了问题.你JSON从服务器得到一个响应,我认为看起来是正确的格式.你能看到它有什么问题吗?看起来像:

[{"id":"1","name":"Fawad Hassan","email":"fawad@test.com"},{"id":"2","name":"Bill 
Gates","email":"bill@test.com"},{"id":"3","name":"Steve 
Jobs","email":"steve@test.com"},{"id":"4","name":"Naveed 
Ahmad","email":"naveed@test.com"},{"id":"5","name":"Mr Zee","email":"zee@test.com"}]
Run Code Online (Sandbox Code Playgroud)

我的Backbone项目代码看起来像这样,我也找不到问题.

window.AppModel = Backbone.Model.extend({
    url: function() {
        return 'http://dev.local/ci/index.php/site/userpost';
    }
});

window.AppContr = Backbone.Collection.extend({
    model: AppModel,
    initialize: function() {
        this.model = new AppModel;
    }
});

window.App = new AppContr({name: "Markus"});

window.AppView = Backbone.View.extend({
    el: $("#content"),
    initialize: function() {
        this.render();
    },
    render: function() {
        console.log(App.model.toJSON());
    }
});

App.model.fetch();
window.View = new AppView;
Run Code Online (Sandbox Code Playgroud)

Iva*_*nić 8

fetch在模型上做了一个,但回复了Collection.这是主要问题.

第二个问题是你render在AppView上完全随机地调用,即它与model或没有任何关系collection.也许在model渲染视图时没有任何内容.您应该将渲染绑定到collectionmodel与之绑定bind.每当你调用fetch你的视图时都会重新渲染,这是Backbone的主要好处之一:)

这里是代码:)

window.Person = Backbone.Model.extend({});

window.Addressbook = Backbone.Collection.extend({
    url: 'http://dev.local/ci/index.php/site/userpost',// declare url in collection
    model: Person
}

window.Addresses = new AddressBook();

window.AppView = Backbone.View.extend({
    el: $('#content'),
    initialize: function() {
        Addresses.bind('reset', this.render); // bind rendering to Addresses.fetch()
    },
    render: function(){
        console.log(Addresses.toJSON());
    }
});

window.appview = new AppView();
Addresses.fetch();
Run Code Online (Sandbox Code Playgroud)