Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有一些输入字段,它们的值是正确的,但没有被渲染_Javascript_Riot.js - Fatal编程技术网

Javascript 我有一些输入字段,它们的值是正确的,但没有被渲染

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

我做了一个与我正试图完成的事情完全一致的东西,就在它起作用的地方:。riotjs和所有东西的相同版本:/

我正在使用Riot.js接管一个代码库,这是自动完成的 标签如下所示:

    <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>