javascript - at.js 插件动态更新data. [solved]
大家讲道理
大家讲道理 2017-04-11 13:13:59
[JavaScript讨论组]

前端用at.js插件实现 @某人后下拉列表,现在想动态更新data数据,我目前用了remoteFilter这个参数,但是没有作用。代码如下。

$('#add_todo_input').atwho({
            at: '@',
            displayTpl: "
  • ${name}
  • ", callbacks: { beforeSave: function (data) { console.log(data); }, remoteFilter: function (query, test) { console.log(query); var ll = new Array(); $.getJSON(API_HOST + 'user/search?search=' + query, function (resp) {; $.each(resp,function(index,element){ ll.push(element.name); }); console.log(ll); if (resp.code == 0) { $.each(resp.data, function (index, element) { ll.push(element.name); }); console.log(ll); return ll; test(resp.data.username); } }) }, } });

    补充,下面这个代码是工作的:

    $('#add_todo_input').atwho({
                at: '@',
                displayTpl: "
  • ${name}
  • ", callbacks: { remoteFilter: function (query, callback) { var ll = new Array(); $.getJSON(API_HOST + 'user/search?search=' + query, function (resp) { if (resp.code == 0) { $.each(resp.data, function (index, element) { ll.push(element.username); }); callback(ll); } }) }, } });

    一开始我以为这个callback要换成自己的函数,发现自己的函数没有被调用,所以照官网例子,更改为callback,之前以为要手工赋值这个data数据,实际上是内部实现的,之前的代码在执行到test那个函数的时候已经返回了,不会执行到这一步,而且数据的格式也不对,数据的格式应该是如下格式:

    data = [
    {
    name: 'tolerious',
    id: 1
    },
    {
    name: 'segmentfault',
    id: 2
    }  
    ]
    大家讲道理
    大家讲道理

    光阴似箭催人老,日月如移越少年。

    全部回复(1)
    ringa_lee

    函数名字应该不重要,你之前的 test 不工作是因为你 test() 是在 return 之后调用的,永远执行不到。

    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号