0

応答値の解析方法.. json 値から json 値を取得したい....しかし、解析で問題が発生する....

var ListView = Backbone.View.extend({
    el: '#app-container',

    initialize: function() {
        _.bindAll(this,"render");
        console.log('ListView init.');
        this.counter = 0;
        this.collection = new FieldCollection();
        this.collection;
        this.render(this.collection);
    },

    events: {
        'click #add': 'addItem'
    },

   render: function(val) {
        console.log(val);
        console.log('Render called.');

    },
});

私のjsonは次のとおりです...

[
{
    "name": "qqqqqqqqqqqqqqqqqqq",
    "img": "qqqqqqqqqqqqqqqqqqqq"
},
{
    "name": "eeeeeeeeeeeeeeeeeee",
    "img": "eeeeeeeeeeeeeeeeeee"
},
{
    "name": "ggggggggggggggggggg",
    "img": "gggggggggggggggggggg"
}
]

私の質問は、応答値を解析する方法です...

ビューでjson値にアクセスする方法...

var FieldCollection = Backbone.Collection.extend({
    defaults: {
        model: Field
    },
    model: Field,
    url: 'http://localhost:8080/backbonejs/myjsoncollection.json',
    initialize: function() {
        console.log('FieldCollection init.');
    },
    parse: function(response) {
      console.log(response);
      return response;
    }
});

これはコード全体です...

$(function(){

var Field = Backbone.Model.extend({
    defaults: {
        name: "shaleen",
        img: "not found",
    },
    initialize: function() {
       // console.log(this.attributes.name);
    }
});
 var FieldCollection = Backbone.Collection.extend({
    defaults: {
        model: Field
    },
    model: Field,
    url: 'http://localhost:8080/backbonejs/myjsoncollection.json',
    initialize: function() {
        console.log('FieldCollection init.');
    },
/*  parse: function(response) {
      console.log(response);
      return response;
    }*/
});

var ListView = Backbone.View.extend({
    el: '#app-container',
    initialize: function() {
        _.bindAll(this,"render");
        console.log('ListView init.');
        this.counter = 0;
        var jsonfield = new FieldCollection();
        jsonfield.fetch();
        this.render(jsonfield);
    },
   render:function(collection){
        _.each(collection, function(model){
            console.log(model.get('name'));
        });

        _.each(function(model){
            console.log(model.get('name'));
            console.log(model.get('img'));
        },this);
    }
});

var listView = new ListView();

});

4

1 に答える 1

0

parse 関数はオプションです。サーバーからデータを受信した後に何か特別なことが起こった場合にのみ実装する必要があります。エラーの考えられる原因を特定するために、まずサーバーに接続しないことでアプローチを簡素化します。次のコードを実行してください。

var Field = Backbone.Model.extend({});

var FieldCollection = Backbone.Collection.extend({
    model: Field,
});

var ListView = Backbone.View.extend({
    el: '#app-container',

    initialize: function() {
        this.collection = new FieldCollection();
        this.collection.add([{name:'name1',img:'img1'},{name:'name2',img:'img2'}]);
        this.render(this.collection);
    },

    render(collection){
        collection.each(function(model){
            console.log(model.get('name')+' '+model.get('img'));
    },this);
});

これが機能する場合は、次の 2 つの変更を適用します。

  1. コレクションを変更して、URL を含めます。

    var FieldCollection = Backbone.Collection.extend({
        model: Field,
        url='http://localhost:8080/backbonejs/myjsoncollection.json'
    });
    
  2. ビューの初期化関数を変更して、フェッチを実行します。

    initialize: function() {
        this.collection = new FieldCollection();
        this.collection.fetch();
        this.render(this.collection);
    },
    

拡張バージョンで動作する場合は、最初に簡易バージョンを実行してください。

于 2012-08-16T09:53:53.937 に答える