Backbone を使い始めたばかりです。以下のコードに基づいて、2 つの質問があります。
最初の問題は、フォームに入力してボタンをクリックした後、いくつかのデフォルト属性を使用してモデル オブジェクトを作成する必要があることです。ただし、console.log には、モデルを新しいビュー オブジェクトに渡す前に、記入したフォームからの最新の属性を持つモデルが出力されます。
2 番目の問題は、データを db に正常に保存できることですが、成功のコールバック関数が呼び出されていません。誰かがこれらの質問に答えるのを手伝ってくれませんか??
var form = document.forms[0];
var RetailerModel = Backbone.Model.extend({
urlRoot: ' retailer.php',
defaults: {
name: 'company-name',
address: 'company-address',
phone: 'company-phone',
icon: 'http://localhost/icon.png'
}
});
var RetailerCollection = Backbone.Collection.extend({
});
var RetailerView = Backbone.View.extend({
className: 'retailer',
template: _.template($('#retailer-template').html()),
initialize: function() {
//this.listenTo(this.model, 'change', this.render);
var obj = {
name: form.name.value,
address: form.address.value,
phone: form.phone.value
};
this.model.set(obj);
//why the successful callback does not work????
this.model.save(null, {success: function(model, response){console.log('successful');}});
},
render: function() {
$('#retailer-list').append(this.$el.html(this.template(this.model.toJSON())));
return this;
}
});
var RetailerViews = Backbone.View.extend({
});
$('#submit').click(function(e){
var retailer_model = new RetailerModel();
console.log(retailer_model); // this prints out the new changed attributes instead of the default ones, why???
var retailer_view = new RetailerView({model: retailer_model});
form.reset();
});