gpt4 book ai didi

javascript - 无法交换模型集合属性?

转载 作者:行者123 更新时间:2023-12-03 10:07:44 25 4
gpt4 key购买 nike

我是backboneJS的新手。我从 www.todomvc.com 下载了代码。我有一个按钮,可以触发下面的 moveUp 函数,该按钮会将“todo”模型向上移动一步,即确定优先级,它按属性“order”排列集合。我想要的是我可以交换两个模型的“顺序”属性。这就是我认为可行的......

moveUp: function(){
var index = this.model.collection.indexOf(this.model);
var nextModel = this.model.collection.at(index+1);

var order1 = this.model.attributes.order;
var order2 = nextModel.attributes.order;

this.model.set('order', order2);
this.model.collection.models[index + 1].set('order', order1);

}

但这不起作用,代码前后的“order”属性保持不变。我尝试过的事情是:

model.set({'order',order1});


model.set('order',order1);


var order = _.clone(model.get('order'));
model.set(order, order1);


var map = {};
map['order'] = value;
this.model.set(map);

代码已分享 here 。如果有人能指出我哪里错了。我还在某处读到它不会触发“改变”。我们将非常感谢您的帮助。

最佳答案

我发现您设置新订单值的方式存在问题。

主干Model set需要属性的哈希值或属性名称和值的 2 个参数。来自文档:

Set a hash of attributes (one or many) on the model. If any of the attributes change the model's state, a "change" event will be triggered on the model. Change events for specific attributes are also triggered, and you can bind to those as well, for example: change:title, and change:content. You may also pass individual keys and values.

因此您可以使用以下两种方式中的任何一种来调用set:

this.model.set({'order': order2}); //note the curly brackets, so you pass a hash of attributes
this.model.set('order', order2); //note prop name and value are 2 separated arguments

关于javascript - 无法交换模型集合属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com