【问题标题】:Multiple object array not working in At.js多对象数组在 At.js 中不起作用
【发布时间】:2018-10-07 10:43:47
【问题描述】:

我正在使用At.js plugin。它适用于单个对象 (demo)

var names1 = ["Jacob", "Isabella", "Ethan", "Emma", "Daniel", "Madison"];
var names = $.map(names1, function(value, i) {
  return {
    'id': i,
    'name': value,
    'email': value + '@yahoo.com'
  };
});

但是当我尝试添加多个对象时它不起作用(demo)。我知道代码是问题所在。 我想在用户使用@ 标签选择人名时显示描述。

$(function() {
  $.fn.atwho.debug = true

  var names1 = [{
      "name": "Jacob",
      "description": "description one description one description one"
    },
    {
      "name": "Isabella",
      "description": "description two description two description two"
    }
  ];

  var names = $.map(names1, function(value, description, i) {
    return {
      'id': i,
      'name': value,
      'email': description
    };
  });

  var at_config = {
    at: "@",
    data: names,
    headerTpl: '<div class="atwho-header">Service List <small>↑&nbsp;↓&nbsp;</small></div>',
    insertTpl: '${email}',
    displayTpl: "<li>${name}</li>",
    limit: 200
  }
  $inputor = $('#inputor').atwho(at_config);
  $inputor.caret('pos', 47);
  $inputor.focus().atwho('run');
});

【问题讨论】:

    标签: javascript jquery at.js


    【解决方案1】:

    Jquery 中的 map 函数不会将对象中的每个元素作为函数参数,您会获取整个对象(列表中的元素),然后您需要提取名称和描述。你快到了。

    $(function() {
      $.fn.atwho.debug = true
    
      var names1 = [{
          "name": "Jacob",
          "description": "description one description one description one"
        },
        {
          "name": "Isabella",
          "description": "description two description two description two"
        }
      ];
    
      var names = $.map(names1, function(value, index) { //Here I have only used value
        return {
          'id': index,
          'name': value.name, //Here I take value.name from the object
          'email': value.description //And value.description from the object
        };
      });
    
      var at_config = {
        at: "@",
        data: names,
        headerTpl: '<div class="atwho-header">Service List <small>↑&nbsp;↓&nbsp;</small></div>',
        insertTpl: '${email}',
        displayTpl: "<li>${name}</li>",
        limit: 200
      }
      $inputor = $('#inputor').atwho(at_config);
      $inputor.caret('pos', 47);
      $inputor.focus().atwho('run');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 2019-06-06
      • 2022-07-21
      相关资源
      最近更新 更多