我正在使用表单来保存一些设置'到Meteor集合(在下面的示例中' SettingsCollection')。
因为有 lot 的设置,我使用的技巧是我必须在stackoverflow上找到的,即在变量中抓取集合(call' settings' ),删除._id,编辑,然后使用更新的变量更新集合。
然而,这会导致弄乱这个':
Template.settings_edit.events({
'submit form': function(e, t) {
var settings = this // 'THIS' BEING THE DATA CONTEXT
var settings_id = this._id
console.log('settings_id: ', settings_id) //RETURNS _ID AS EXPECTED
settings.x = new_x
settings.y = new_y
settings.z = new_z
settings.a = new_a
// ...
// etc.
delete settings._id // MAKES THE COLLECTION 'HEADLESS' SO THAT I CAN USE IT FOR THE UPDATE BELOW
SettingsCollection.update(settings_id, { $set: settings })
console.log('this._id: ', this._id) // RETURNS UNDEFINED. WHAT HAPPENED TO 'THIS'???
return false;
}
})
我的问题是 - 这个'发生了什么?
它肯定受行删除设置的影响._id(我无法思考为什么)。
还有另一种方法可以实现同样的更新(记住很多设置)同样狡猾和简洁吗?
答案 0 :(得分:0)
因为您设置了settings = this并且对象是通过引用分配的,这意味着如果您更改此设置,则设置也会更改,反之亦然。 数组也是如此。
对于按值分配的String,Number和boolean,不会发生这种情况。