Bootstrap标签输入绑定问题

时间:2014-07-24 17:19:05

标签: jquery twitter-bootstrap bootstrap-tags-input

我有一种情况需要记住在更改之前tagsInput字段的值是什么。但是,某些信息是动态绑定的,因此当输入发生变化时,我的变量的值也会引用它。

var topics = $("#topics").tagsinput('items');
$('#topics').tagsinput('add', 'A');
$('#topics').tagsinput('add', 'B');

var LISA = topics;
alert('Lisa is: ' + JSON.stringify(LISA));
$('#topics').tagsinput('add', 'newone');
alert('Lisa is: ' + JSON.stringify(LISA));

所以我想要的是变量Lisa而不是添加了newone

但是使用bootstrap标签输入jQuery插件,变量会随着值动态变化。任何人都知道如何关闭此绑定,以便我可以回想一下添加新信息之前该字段的值是什么?

1 个答案:

答案 0 :(得分:1)

问题

这与bootstrap-tags本身无关。它是JavaScript创建变量的方式的副产品。例如,考虑以下JavaScript:

var array = ["A", "B"];
var copy = array; 

array.push("C");
copy.push("D");

console.log(array);
console.log(copy);

arraycopy都将等于["A", "B", "C", "D"]

对象copy只包含一个返回array的引用,因此它们都会解析为同一个对象。更新一个更新。另见:value of an array changes original array

解决方案

您想要做的是clone an object in javascript,如下所示:

var LISA = JSON.parse(JSON.stringify(topics));

LISA更改时,topics现在不会更新。

Demo in fiddle (open up the console)