gpt4 book ai didi

javascript - Ractive,<input> 上的两个绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 07:44:44 28 4
gpt4 key购买 nike

注意:我指的不是“双向绑定(bind)”

我正在使用 ractive 装饰器 (select2) 将输入转换为 select2。我通过ajax获取的数据是数据库中的一些记录,例如:

[{id:1, name:"test", quantity:2, image:"image.jpg"}, 
{id:2, name:"bar", quantity:21, image:"image2.jpg"},
{id:3, name:"foo", quantity:21, image:"image3.jpg"}]

我使用 select2 的函数来格式化这些对象,formatResultformatSelection

我使用装饰器的元素是这样的:

<input type="hidden" value="{{values}}" decorator="select2">

用户选择某些内容后,values将等于所选对象的 id(例如:如果我选择第一条和最后一条记录,则 value=1,3)

我的问题是:如何获取所选的完整对象?我正在考虑 <input> 上的两个绑定(bind)(<input value="{{values}}" data-objects="{{objects}}">,因此当用户选择某些内容时,装饰器也可以保存完整的对象。但是当我调试装饰器时,node._ractive.binding仅显示值而不显示其他属性。

最佳答案

我通过将ajax请求的结果保存在ractive中,然后将id与对象id进行匹配来找到原始对象来解决这个问题。

不是最漂亮的东西,但它确实有效。

Ractive.decorators.select2.type.whatever = {
tags: [],
separator: "|",
ajax: {
url: "ajax_url",
data: function(searchterm, page) {
return {
searchterm: searchterm,
page: page,
};
},
results: function(data, page) {
//Here i save the records
ractive.set("data", data.records);
return {results: data.records, more: data.more};
}
}
};


var ractive = new Ractive({
el: "things",
template: "template",
});

ractive.observe("ids", function(ids) {
var data = ractive.get("data");
ids = ids.split("|");

//I can obtain the original objects
});
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>
<script src="https://rawgit.com/Prezent/ractive-decorators-select2/master/ractive-decorators-select2.js"></script>

<!-- select2, jquery missing -->

<script type="ractive-template" id="template">
<input type="hidden" value="{{ids}}" decorator="select:whatever">
</script>

<div id="things"></div>

关于javascript - Ractive,&lt;input&gt; 上的两个绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27566541/

28 4 0