0

何らかの理由で、this.model が editUsp メソッドで機能しません。モデル内の値を .set で変更したい。

私が間違っていることを誰か知っていますか?

次のエラーが表示されます。

Uncaught TypeError: Object function (){ return parent.apply(this, arguments); } has no method 'set' 

これはコードです:

var Usp = Backbone.Model.extend();

var widgetView = Backbone.View.extend({
    model: Usp,
    initialize: function (data,collection) {
        var usp = new Usp({type:'usp', items: data});
        collection.add(usp);
        this.render(data);
    },
    events: {
            "click .edit":   "editUsp",
    },
    editUsp: function(){
        this.model.set({type:'uspsss',items: 'hoi'});
    },
    render: function(data){
        var uspList = '<ul>';
        $.each(data['Usps'], function(i,item){
            uspList += '<li>'+item+'</li>';
        });
        var template = _.template('<div class="block"><a class="edit"><i class="icon-edit"></i> Edit </a><%= uspList %></div>');
        var widgetView = template({uspList: uspList});
        this.setElement(widgetView);
        $('.laySidebar .smallBlocks').append($(this.el).hide().fadeIn(700));
    }
    });
4

2 に答える 2

2

ビューでモデルのインスタンスを参照する必要があります。

例えば:

var usp = new Usp();

これで、モデルのインスタンスが 1 つになりました。それをビューインスタンスに渡します

var widgetViewInstance = new widgetView({model: usp});

widgetView 定義から次の行を削除します。

model: Usp,

残りはうまくいくはずです。

于 2013-05-03T14:11:11.907 に答える
1

最初の行の代わりに、代わりにBackbone.Model.extend(...)これを試してください...

var Usp = new Backbone.Model();

extend(...)Backbone.Model クラスを拡張しているだけです。を実行するsetには、モデルのインスタンスが必要です。

于 2013-05-03T14:04:26.430 に答える