引导选择器val won'不接受对象,只是字符串
Bootstrap selectpicker val won't accept an object just string
我想了解selectpicker
的一个行为。我试着加载这个这个元素有一个属性从我的会话:
Template.checkNotification.onRendered(function () {
var currentNotification = Session.get("currentNotification");
this.$('#symptoms1').selectpicker({
multipleSeparator: ' ',
});
this.$('#symptoms2').selectpicker({
multipleSeparator: ' ',
});
var symptoms = [];
for (var symptom of currentNotification.symptom.symptoms) {
symptoms.push('"' + symptom.name + ';;' + symptom.value + '"');
}
var symptomsSelected = symptoms.join(", ");
var test1 = ['Dor de Cabeça;;dor-de-cabeca','Náusea;;nausea'];
var test2 = "["+symptomsSelected+"]";
this.$('#symptoms1').selectpicker('val', test1);
this.$('#symptoms2').selectpicker('val', test2);
});
当我执行这段代码时,只有元素#symptom1
工作并将适当的选项加载到selectpicker
中。
如何构建一个选项数组来提供给selectpicker
?
如果要将症状传递给selectpicker
,则需要将其作为本机数组提供。下面的代码分别用原来的方式和新的方式(适用于给val
赋值)构建数组:
var currentNotification = {
symptom: {
symptoms: [
{ name: "symptom1", value: "value1" },
{ name: "symptom2", value: "value2" },
{ name: "symptom3", value: "value3" },
{ name: "symptom4", value: "value4" },
{ name: "symptom5", value: "value5" }
]
}
};
var symptoms = [];
for (var symptom of currentNotification.symptom.symptoms) {
symptoms.push('"' + symptom.name + ';;' + symptom.value + '"');
}
var symptomsSelected = symptoms.join(", ");
var test1 = "["+symptomsSelected+"]";
var test2 = $.map(currentNotification.symptom.symptoms, function(symptom) {
return symptom.name + ';;' + symptom.value;
});
console.log("test1: ", typeof test1, " value: ", test1);
console.log("test2: ", typeof test2, " value: ", test2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
这是如何工作的?jQuery $.map
函数将处理currentNotification.symptom.symptoms
数组中的每个症状,并分别对它们进行格式化,以便与selectpicker
一起使用。每个元素都被格式化,但数组保留为原生Javascript数组,每个元素对应于原始currentNotification.symptom.symptoms
数组。
比较test1
和test2
的结果,看看差异:
test1: string value: ["symptom1;;value1", "symptom2;;value2", "symptom3;;value3", "symptom4;;value4", "symptom5;;value5"]
test2: object value: [
"symptom1;;value1",
"symptom2;;value2",
"symptom3;;value3",
"symptom4;;value4",
"symptom5;;value5"
]
注意,在这个示例代码中,test1
是一个字符串,其格式类似于数组。这类似于JSON数组值,而不是原生Javascript数组值。test2
是一个适合与selectpicker
一起使用的Javascript数组。
使用$.map
解决方案将解决您当前的问题并生成适当的Javascript数组。现在,您可以使用它来设置selectpicker
的val
:
this.$('#symptoms2').selectpicker('val', test2);
活塞:http://plnkr.co/edit/sjwK1e?p=preview
$scope.symptomsSelected="["+'"'My selected item is string'"'+"]"
$scope.test2 =angular.fromJson($scope.symptomsSelected);
$scope.test2=$scope.test2[0];
{{test2}}
<br>
{{symptomsSelected}}
相关文章:
- JS变量返回的对象不是值
- 对象不支持属性或方法“自动完成”
- autocomplete不接受源的json对象
- 不接受0-0-0的正则表达式是什么
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- Javascript Regexp-不接受空格,但应该接受
- JavaScript对象不是从原型链继承的
- mandrill合并标记不接受变量值
- “;Stub对象”;对象不符合检查点's条件
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- jQuery:对象不是函数
- Moment.js不接受变量作为参数
- 为什么 Array.prototype.reduce() 不接受 Map 对象作为初始值
- 本地存储不接受来自对象的值
- Ajax - Spring 发送 javascript 对象并接受为自定义对象.客户端发送的请求在语法上不正确
- 对象数据url不接受jquery命令
- Dojo 堆积面积图表不接受对象作为值
- 制作一个node.js模块,该模块要么接受参数,要么不接受参数,并返回一个适当的函数/对象
- 引导选择器val won'不接受对象,只是字符串
- Android 2.3.7 Webview不接受字符串化的json (result总是一个空对象)