我想动态加载select option
的文本值。
当我单击红色时,文本值应为红色,当我单击蓝色时,文本值应为蓝色。使用knockout.js
<a class="a_red" data-bind="">Red</a>
<a class="a_blue" data-bind="">Blue</a>
<select>
<option value="25"> 25 Red/Blue </option> load either Red or Blue
<option value="50"> 50 Red/Blue </option>
<option value="100"> 100 Red/Blue </option>
<option value="200"> 200 Red/Blue </option>
</select>
答案 0 :(得分:1)
向您的视图模型添加chosenColor
属性,该属性会在您点击每个“红/蓝”切换时发生变化。并且,使用自定义函数将值附加到每个<option>
的标题:
JS:
var vm = {
chosenColor: ko.observable('Red'),
chosenValue: ko.observable(),
getCaption: function(val) {
return val + ' ' + this.chosenColor()
}
};
ko.applyBindings(vm);
HTML:
<a href="javascript:;" class="a_red" data-bind="click: chosenColor.bind($data, 'Red')">Red</a>
<a href="javascript:;" class="a_blue" data-bind="click: chosenColor.bind($data, 'Blue')">Blue</a>
<select data-bind="value: chosenValue">
<option value="25" data-bind="text: getCaption(25)"></option>
<option value="50" data-bind="text: getCaption(50)"></option>
<option value="100" data-bind="text: getCaption(100)"></option>
<option value="200" data-bind="text: getCaption(200)"></option>
</select>
请参阅Fiddle
此外,更好的面向Knockout的方法是:
var qtys = [25,50,100,200];
function viewModel() {
var self = this;
this.chosenColor = ko.observable('Red');
this.chosenValue = ko.observable();
this.generateOptions = function(vm) {
return qtys.map(function(q) {
return { value: q,
caption: q + ' ' + self.chosenColor() };
})
}
};
ko.applyBindings(new viewModel());
和
<a href="javascript:;" class="a_red" data-bind="click: chosenColor.bind($data, 'Red')">Red</a>
<a href="javascript:;" class="a_blue" data-bind="click: chosenColor.bind($data, 'Blue')">Blue</a>
<select data-bind="value: chosenValue,
options: generateOptions(),
optionsValue: 'value',
optionsText: 'caption'">
</select>
请参阅Fiddle
答案 1 :(得分:1)
您可以使用JQuery
完成此操作,在用户点击链接时调用方法text()
,如下所示:
$(".a_red").click(function(){
$("option").text("red");
});
$(".a_blue").click(function(){
$("option").text("blue");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="a_red">Red</a>
<a href="#" class="a_blue">Blue</a>
<select>
<option value="25"> 25 Red/Blue </option>
<option value="50"> 50 Red/Blue </option>
<option value="100"> 100 Red/Blue </option>
<option value="200"> 200 Red/Blue </option>
</select>
我希望它可以帮助你,再见。