如何将动态控件与 KNOCKOUTJS 一起使用
how do I use dynamic controls with knockoutjs
我有一个场景,我正在尝试应用淘汰赛,但有一些问题。基本上我有这种用户界面
Add (create a new Select Box duo with delete button)
Select Box (options = Json from ajax request)
Select Box (options = Json from ajax request with param from 1st select)
Delete
Select Box
Select Box
Delete
等
每一行我都视为数组中的另一个小部件,所以我的淘汰赛是为了简单起见
var ViewModel = function (widgets) {
var self = this;
this.widgets= ko.observableArray(widgets);
this.subWidgets= ko.observableArray();
this.mySelections = ko.observableArray();
this.selectedWidget.subscribe(function (name) {
if (name != null) {
$.ajax({
url: '@Url.Action("AddSubWidgetsByName")',
data: { name: name },
type: 'GET',
async: false,
contentType: 'application/json',
success: function (result) {
self.subWidgets(result);
}
});
}
} .bind(this));
self.addWidget = function (widget) {
self.mySelections.push({
??? profit
});
};
}
var viewiewModel = new ViewModel();
ko.applyBindings(viewiewModel);
$.ajax({
url: '@Url.Action("AddFund")',
type: 'GET',
async: false,
contentType: 'application/json',
success: function (result) {
viewModel.widgets(result);
}
});
<select id="widgets"
data-bind='
options: widgets,
optionsValue : "Name",
optionsText: "Name",
optionsCaption: "[Please select a widgets]"'
value: selectedWidget,
>
我可以为每个小部件动态创建一个选择并将子小部件选择与 mySselections 数组中的项目相关联吗?我不能以这种方式使用 selectedWidget 的值绑定,因为所有下拉列表都以这种方式绑定在一起。我需要让他们独立 - 关于如何做到这一点的任何想法?
干杯!
一种方法是使每个小部件成为自己的视图模型(注意,这是来自jsFiddle,所以ajax是为了使用他们的echo API,这需要POST):
var Widget = function(){
var self = this;
self.selectedWidget = ko.observable('');
self.subWidgets = ko.observableArray([]);
self.selectedSubWidget = ko.observable('');
this.selectedWidget.subscribe(function (name) {
if (name != null) {
$.ajax({
url:"/echo/json/",
data: {
json: $.toJSON(
[Math.floor(Math.random()*11),
Math.floor(Math.random()*11),
Math.floor(Math.random()*11)]
),
delay: 1
},
type:"POST",
success:function(response)
{
self.subWidgets(response);
}
});
}
});
};
然后,您可以使用简单的视图模型轻松跟踪子选择和添加。这是完整的小提琴。
相关文章:
- knockoutjs可观察数组
- 转义符不能与innerHTML一起使用
- KnockoutJS-组件-多个实例
- 从复选框和Selects-KnockoutJS中获取值的总和
- 高亮显示与数组字符串一起使用时文本插件中断
- setTimeout可以与闭包内的函数一起使用吗
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Highcharts colorsByPoint与系列中的线性渐变一起使用时不起作用
- 如何将js库与typescript一起使用
- 将webpack和babel与父项目目录中的文件一起使用
- 将 Drag&Drop 与 jsTree 和 DataTables 一起使用
- Javascript-如何让脚本与Ajax请求的数据一起运行
- 将两个ext.TabPanels滚动到一起
- 将jQuery UI Timepicker Addon与React一起使用
- 如何将动态控件与 KNOCKOUTJS 一起使用
- KnockoutJs-如何将数据表与现有绑定表一起使用
- 有没有像KnockoutJS这样的javascript MVVM框架可以与Adobe Air一起使用
- 将KnockoutJS与JQuery灯箱一起使用
- MVC- Kendo DateTimePicker文化不能与KnockoutJS一起工作
- 当与绑定一起使用时,KnockoutJS的数据绑定不起作用