如何使用字符串作为键在模型(Backbone.js)中设置多个属性?

如何使用字符串作为键在模型(Backbone.js)中设置多个属性?,backbone.js,Backbone.js,我有一个类似的问题:但我需要设置多个属性,而不仅仅是一个 因此,我有一个模型,其中有人可以添加自定义属性,但我在设置它们时遇到问题,因为如果我这样做: parameter.set({ name: nameValue, value: valueValue, description: descriptionValue }); 其中name、value和description是字符串值,backbone正在通过“name”、“value”和“description”的名称创

我有一个类似的问题:但我需要设置多个属性,而不仅仅是一个

因此,我有一个模型,其中有人可以添加自定义属性,但我在设置它们时遇到问题,因为如果我这样做:

parameter.set({
    name: nameValue, 
    value: valueValue,
    description: descriptionValue
});
其中
name、value
description
是字符串值,backbone正在通过“name”、“value”和“description”的名称创建一个新属性,但实际上我需要它们是“name”等的值

如果我尝试这样做:

parameter.set(name, nameValue);
parameter.set(value, valueValue);
parameter.set(description, descriptionValue);
parameter.attributes[name] = nameValue;
parameter.attributes[value] = valueValue;
parameter.attributes[description] = descriptionValue;               
主干仅创建最后一行:
parameter.set(description,descriptionValue)

当我尝试这样做时,同样的事情也会发生:

parameter.set(name, nameValue);
parameter.set(value, valueValue);
parameter.set(description, descriptionValue);
parameter.attributes[name] = nameValue;
parameter.attributes[value] = valueValue;
parameter.attributes[description] = descriptionValue;               
例如,假设我有以下HTML代码:

<input type="text" id="name"/>
<input type="text" id="nameValue"/>

<input type="text" id="value"/>
<input type="text" id="valueValue"/>

<input type="text" id="description"/>
<input type="text" id="descriptionValue"/>
您可以像这样添加它们:

var name = this.$('#name').val();
var nameValue = this.$('#nameValue').val();
var value = this.$('#value').val();
var valueValue = this.$('#valueValue').val();
var description = this.$('#description').val();
var descriptionValue = this.$('#descriptionValue').val();

var params = {};

if (name) {
    params[name] = nameValue;
}
// the same for other attributes
// ....
// And at the end

model.set(params);
If
语句将确保属性名称存在。然后将它们收集到一个空对象中。最后,我马上把他们安排好

更新

下面您可以找到您的问题的
工作
示例。填充输入,然后单击“提交”将要构造的对象字符串化

var MyForm=Backbone.View.extend({
el:'测试',
活动:{
“单击。提交”:“showObject”
},
showObject:函数(e){
e、 预防默认值();
var name=this.$('#name').val();
var nameValue=this.$('#nameValue').val();
var value=this.$('#value').val();
var valueValue=this.$('#valueValue').val();
var description=this.$('#description').val();
var descriptionValue=this.$(“#descriptionValue”).val();
var params={};
如果(姓名){
params[name]=nameValue;
}
如果(值){
参数[值]=值值;
}
如果(说明){
params[description]=descriptionValue;
}
此.model.set(params);
this.$('.test object').text(JSON.stringify(this.model.toJSON());
}});
var TestModel=Backbone.Model.extend({});
var myForm=new myForm({model:(new TestModel())})

显示对象

因此,是否要创建一个具有属性
说明
名称
?否,我想将用户在文本框中输入的参数属性放入其中(我更新了代码),您确定有这些值(它们不是空的或未定义的)当你试图更新你的模型时,
name
value
description
的问题?这当然不是主干问题,而是其他一些代码,你能创建一个小提琴来演示问题吗?不,这是不对的。此解决方案提供的结果与我前面提到的解决方案相同。@hlamija我已更新了答案,请检查工作代码段。对我来说,它不工作:(它仍然只添加
参数中的最后一项,而不是全部。)them@hlamija正如您从代码片段中看到的,它正在工作。我想您的代码中还有另一个问题。在模型中设置每个设置的参数之前,是否可以对其进行console.log?