3

私はバックボーン js で作業しており、フェッチを使用してモデルにデータを入力しようとしています。問題は、フェッチが機能しているように見えるのに、モデルにデータが入力されていないことです。

コードのスニペット:

Backbone.emulateHTTP = true;
    Backbone.emulateJSON = true;

    ComponentsModel = Backbone.Model.extend({

        initialize : function() {

        },
        defaults : {
            component_id : null
        },
        urlRoot : "/components/ajax_component",

    });

    ComponentsView = Backbone.View.extend({
        el : $('body'),

        events : {
            'change #component-selector' : 'changeComponent',
        },

        initialize : function() {
            _.bindAll(this, 'render', 'changeComponent');
            this.render();
        },

        changeComponent : function(e) {
            var clickedEl = $(e.currentTarget);
            var value = clickedEl.attr("value");
            var component = new ComponentsModel({id :value, component_id :value });
            component.fetch();
            component.toJSON();
            alert(component.get('component_name'));

        },

        render : function() {

        },
    });

サーバーから返される JSON は次のようになります。

{"component_id":"1","component_name":"Test Component 1","component_description":"A simple test component","component_required":"","user_id":"1","component_approved":"0","component_price":"0","component_overview":"'"}

アラートは常に未定義です。何か不足していますか?

4

1 に答える 1

7

Fetch は非同期であるためsuccess、コールバックがありerrorます。そのため、プロパティを取得しようとするまでにデータがフェッチされるかどうかはわかりません。これを試して:

component.fetch({
   success: function(){
       // Now you got your data
   }});
于 2012-05-26T18:57:07.537 に答える