我有一个用ng-switch
切换视图的应用程序,而切换视图我的标记输入特别丢失了它的值并落入其对象字符串,我的其他输入都没有遇到这个问题:
HTML:
<input ui-select2="version2"
id="keywordsGlobal"
name="keywordsGlobal"
class="region-keywords input-xlarge"
data-ng-model="data.keywordsGlobal"
required-multiple />
JSON:
[
{
"id":"[object Object]",
"text":"[object Object]"
}
]
有没有办法特别阻止这种情况?
答案 0 :(得分:4)
我遇到了ui-select2的各种问题,只是编写了一个简单的自定义指令,一切正常。如果其他人遇到角度问题,选择2和标记问题,我建议尝试一下。对我有用的是一个模板,如:
<input type="text" tag-list ng-model="item.tags">
请注意,item.tags是一个javascript数组,而不是逗号分隔标记的字符串或类似的东西。与自定义指令一起使用(不使用ui-select2,只选择select2):
app.directive('tagList', function($timeout) {
return {
require: 'ngModel',
restrict: 'A',
link: function(scope, element, attrs, controller) {
scope.$watch(attrs.ngModel, function(value) {
if (value !== undefined) {
element.select2('val', value);
}
});
element.bind('change', function() {
var value = element.select2('val');
controller.$setViewValue(value);
});
$timeout(function() {
element.select2({
tags: []
});
});
}
};
});
答案 1 :(得分:3)
在后续加载选择时,似乎没有正确加载数据。使用initSelect()
并手动将数据重新分配给选择似乎可以解决问题。
查看http://jsfiddle.net/qdrjk/111/
$scope.version2 = {
tags : null,
initSelection: function(elem, callback) {
console.log(elem);
var data = $scope.data.keywordsGlobal;
callback(data);
},
createSearchChoice : function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return {
id : term,
text : term
};
}
}
}