【发布时间】:2016-04-19 16:28:56
【问题描述】:
我有一个骨干集合,它使用保存混合来进行批量保存(只是一种实用方法,因为骨干本身不支持批量保存)
// Cars collection
define([
'Car',
'BulkSave'
], function(Car, BulkSave) {
return Backbone.Collection.extend({
model: Car,
save: function() {
var options = {
...
onSuccess: function(cars) {
// do something with cars
console.log(cars);
}
...
};
this.bulkSave(options);
}
}).mixin(BulkSave);
});
// BulkSave Mixin definition
define([], function(){
return {
save: function(options){
var thisCollection = this;
$.ajax({
type: options.type,
url: options.url,
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(options.data),
success: function(data) {
// data would give me the list of cars
// that changed
options.onSuccess.apply(thisCollection, arguments);
}
});
}
};
});
所以当我想批量保存集合时,我会调用
cars.save();
我在这里遇到的问题是在ajax 方法的success 回调中,我将调用选项对象中可用的onSuccess 方法,我将向其传递参数。
有什么区别
options.onSuccess(arguments);
// this logs an arrayList of 3 properties
// [0] -- the actual list of cars which changed
// [1] -- 'success'
// [2] -- the xhr object
对比
options.onSuccess(thisCollection, arguments);
// When i do this instead
// it logs
// the list of cars that changed instead
谁能解释这两种情况的区别?
【问题讨论】:
标签: javascript ajax function backbone.js apply