使用数据库中的字符串值实现芯片初始化

时间:2017-04-13 11:04:07

标签: jquery tags materialize

我正在尝试使用我的数据库中的默认值初始化芯片。
根据文档here
这是正确的做法。

  $('.chips-initial').material_chip({
    data: [{
      tag: 'Apple',
    }, {
      tag: 'Microsoft',
    }, {
      tag: 'Google',
    }],
  });

我想要做的是使用单个字符串将这些标记替换为我自己的标记。
这是我到目前为止所尝试过的 我有一个值为{Tag1}{Tag2}{Tag3}的字符串 我已使用此代码替换该字符串。

    var str = Tag;
    var mapObj = {
        '{':"{tag:'",
        '}':"',},"
    };
    str = str.replace(/{|}/gi, function(matched){
        return mapObj[matched];
    });

现在,当我尝试使用此格式化字符串str来匹配正确的初始化格式时。我没有得到我想要的结果。

    $('.chips-initial').material_chip({
        data: [str],
    });

1 个答案:

答案 0 :(得分:0)

好的,我已经设法解决了这个问题。我发布此信息是为了帮助遇到同样问题的人。

我做的第一件事就是将mapObj替换为

    var mapObj = {
        '{':'"',
        '}':'", '
    };

因此,通过应用上面的代码,新的替换值将从{Test1}{Test2}{Test3}发送到"Test1", "Test2", "Test3",,注意这与json格式类似。

现在宣布一个像这样的新变量

var json = "[" + str + ' " "]';

所以现在它是一个合适的json格式。请注意,最后我添加了一个空格" ",这是为了防止json格式错误,因为替换后的值将以逗号,结尾

接下来是解析此json并添加此var authData

var jsonChips = JSON.parse(json);
var authData = [];

然后这个。

    for (i = 0; i < jsonChips.length; i++) {
      if(jsonChips[i] != " "){
        var tag = {};
        tag["tag"] = jsonChips[i];
        authData.push(tag);
      }
    };

之后我放置了authData

    $('.chips-initial').material_chip({
        data: authData
    });

完成了。一切都很好