knockoutjsforeach数组选择项值绑定
knockoutjs foreach array select item value bind
我有这个选择控件,它通过knockoutjs:获取数据
<select class="form-control" data-bind="value: $root.selectedItem, options: $root.TeacherOptions(), optionsValue: 'TeacherId', optionsText: 'TeacherName', optionsCaption: 'Choose Teacher'"></select>
现在发生的情况是,例如,如果我在列表中的一个下拉列表中选择一个值,foreach列表中的所有其他下拉列表都会自动获得相同的值。
是否可以更改功能,以便只有选定的下拉列表才会更改值?
当前功能的短视频https://i.gyazo.com/1d70b77210e1daf3b14dc29a24bb01e4.gif
添加了更多代码(这是我使用实际下拉值的地方):
t.AddToCart = function (n) {
if (!t.Busy()) {
t.Busy(!0);
n.Processing(!0);
var i = t.SelectedColor();
if (t.selectedItem()) {
$.ajax({
type: "POST",
url: "/webservices/ShopCartWS.asmx/AddItem",
data: "{'packId': " + n.Id + ", 'teacherId': " + t.selectedItem() + " }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (i) {
if (i.d) {
$("#cart-status").sticky();
var r = i.d;
f(r);
n.Processing(!13);
t.Busy(!13);
}
},
error: function (n) {
u(n);
}
});
} else {
alert('Choose Teacher First');
t.Busy(0);
n.Processing(0);
}
}
};
我如何获得价值:
t._teacherOptions = ko.observable();
function getTeacherList() {
$.ajax({
type: "POST",
url: "/webservices/Teachers.asmx/GetTeachers",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (i) {
if (i.d) {
return t._teacherOptions(i.d);
}
},
error: function (n) {
u(n);
}
});
}
getTeacherList();
t.TeacherOptions = ko.computed(function () {
return t._teacherOptions();
});
如果希望不同的选择能够具有不同的值,则需要为它们的value
绑定提供不同的可观察性。看起来你是在foreach
中创建这些选择,所以$root.selectedItem
不是一个变量,而是在你循环的每个元素中都有一个变量。
function TeacherOption(name, id) {
return {
TeacherName: name,
TeacherId: id
};
}
vm = {
TeacherOptions: ko.observableArray([
TeacherOption('one', 1),
TeacherOption('two', 2),
TeacherOption('pi', 3)
]),
selectors: [{
selectedItem: ko.observable()
}, {
selectedItem: ko.observable()
}]
};
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="foreach: selectors">
<select class="form-control" data-bind="value: selectedItem, options: $root.TeacherOptions(), optionsValue: 'TeacherId', optionsText: 'TeacherName', optionsCaption: 'Choose Teacher'"></select>
</div>
相关文章:
- Ember选择绑定-如何使其着火
- 指令中选择输入的双向绑定不起作用
- 性能问题:通用选择器与单独绑定
- 选择与给定函数没有绑定的所有元素
- jQuery:将“CTRL+A”绑定为仅选择特定区域
- ng-model 绑定到选择标签生成的空默认值
- 选择/选项 ng-model 未绑定 ng-selected
- jQuery 绑定以选择更改
- AngularJS在使用值作为值语法时选择不绑定
- AngularJS绑定模型以选择更新输入数字字段,最小值为最大值
- 由其他Ember Select填充的Ember Select不更新选择绑定
- AngularJs的Kendo UI:当用户在网格中选择行时,如何在文本框字段上绑定数据
- 剔除绑定-选择第一个填充的对象
- 如何在HTML中用两个预定义的值绑定选择选项,以在mongodb中插入数据
- AngularJS绑定-选择指令
- 剑道UI绑定选择元素
- 如何获取表单输入,使用Angular绑定选择值
- jquery UI滑块绑定选择
- 如何在jquery调用函数中绑定选择菜单中定义的onchange事件
- 击倒绑定选择与自定义对象的可观察属性