Javascript 我有一些输入字段,它们的值是正确的,但没有被渲染
我做了一个与我正试图完成的事情完全一致的东西,就在它起作用的地方:。riotjs和所有东西的相同版本:/ 我正在使用Riot.js接管一个代码库,这是自动完成的 标签如下所示:Javascript 我有一些输入字段,它们的值是正确的,但没有被渲染,javascript,riot.js,Javascript,Riot.js,我做了一个与我正试图完成的事情完全一致的东西,就在它起作用的地方:。riotjs和所有东西的相同版本:/ 我正在使用Riot.js接管一个代码库,这是自动完成的 标签如下所示: <autocomplete> <div class="input-group {open : showResults}"> <div class="input-group-addon"> <i class="fa {opts.setup.iconc
<autocomplete>
<div class="input-group {open : showResults}">
<div class="input-group-addon">
<i class="fa {opts.setup.iconclass}"></i>
</div>
<input type="text" name={opts.setup.name} class="form-control" onblur={opts.onblur} placeholder={opts.setup.placeholder} value={self.setup.valueSelected} onkeyup={keyup}/>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li each={res in results}><a href="#" onclick={valueSelected}>{res.title}</a></li>
</ul>
</div>
<script>
var self = this;
self.timer = null;
self.showResults = false;
self.results = [];
var value = "";
self.keyup = function(e) {
value = e.target.value;
clearTimeout(self.timer)
self.timer = setTimeout(self.performSearch, opts.setup.timeout);
}
self.performSearch = function() {
if(value == "") {
self.showResults = false;
self.update();
} else {
$.ajax({
url: opts.setup.url + encodeURIComponent(value),
success: function(resp) {
var data = resp;
if(typeof(data) == "string") {
data = JSON.parse(resp);
}
if(!Array.isArray(data)) {
data = data[Object.keys(data)[0]];
}
self.results = data.map(function(obj) {
var str = "";
self.opts.setup.title.split(',').forEach(function(key) {
str += obj[key] + " ";
});
return {title: str, original: obj};
});
if(self.results.length > 0) {
self.showResults = true;
self.update();
}
},
error: function(err) {
console.log(err);
}
});
}
}
self.valueSelected = function(e) {
e.preventDefault();
self.showResults = false;
self.update();
opts.setup.callback(e.item.res.original, opts.fieldName);
}
</script>
</autocomplete>
并且该组件被渲染为:
<autocomplete setup={addressac}> </autocomplete>
真正奇怪的是self.update()可以工作,因为它将autocomplete input fields value属性设置为从下拉列表中选择的正确的新值,但它不在html中呈现value属性,它只是保持呈现其初始值。有人尝试过类似的Riot.js吗?解决方案是从Riot.js版本2.3.*更新到最新版本,即3.6。解决方案是从Riot.js版本2.3.*更新到最新版本,即3.6
<autocomplete setup={addressac}> </autocomplete>