KnockoutJS-使用简单的选择输入发布绑定
KnockoutJS - Issues binding with a simple select input
我是论坛和学习淘汰赛的新手。我在思考如何正确绑定选择输入并将其保存到ajax调用时遇到了问题。到目前为止,我已经使用简单的输入实现了2路绑定。我只是想得到一些指导,以及如何正确地将其保存到ajax中,并从ajax中检索数据并填充数据。
只是在寻找技巧,或者如果有人有任何例子可以看。我真的很感激。
HTML:
<select data-bind="options: available_exploitants_HPSM" multiple="true"></select>
<input data-bind="value: test">
<input data-bind="value: test2">
这是我的视图模型:
incidentViewModel = function IncidentViewModel() {
var self = this;
self.incidents = ko.observableArray();
self.currentIncident = ko.observable();
available_exploitants_HPSM = ko.observableArray(["1","2","3"]);
self.fetchdata = function() {
$.getJSON(Incident.BASE_URL+filterlist+orderlist,
function(data) {
if (data.d.results) {
self.incidents(data.d.results.map(function(item) {
return new Incident(item);
}));
$('#loading').hide("slow");
$('#IncidentTable').show("slow");
}else {
console.log("no results received from server");
}
});
}
self.saveorupdate = function() {
var id = this.ID,
url = Incident.BASE_URL + (id ? '(' + encodeURIComponent(id) + ')' : '');
console.log(url);
return $.ajax(url, {
type: id ? "MERGE" : "POST",
data: ko.toJSON({
test: this.Description,
test2: this.Incident,
composante: this.composante
}),
processData: false,
contentType: "application/json;odata=verbose",
headers: "accept": "application/json;odata=verbose","If-Match": "*",
success: function (data) {
incidentViewModel.fetchdata();
}
});
}
}
function Incident(data) {
var self = this;
self.composante = ko.observable(data.composante);
self.test= ko.observable(data.test);
self.test2= ko.observable(data.test2);
}
var incidentViewModel = new IncidentViewModel();
ko.applyBindings(incidentViewModel);
我本该做的更改:
1) 在incidentViewModel
:中
...
return new Incident(item, self);
...
2) 将saveorupdate
移动到Incident
模型,并将其编辑为:
function Incident(data, viewmodel) {
var self = this;
self.composante = ko.observable(data.composante);
self.test = ko.observable(data.test);
self.test2 = ko.observable(data.test2);
self.id = data.id // you need id to use below in ajax
self.saveorupdate = function() {
var id = self.id, // changed to 'self'
url = Incident.BASE_URL + (id ? '(' + encodeURIComponent(id) + ')' : '');
console.log(url);
return $.ajax(url, {
type: id ? "MERGE" : "POST",
data: {
test: self.test(), //Description,
test2: self.test2(), //Incident,
composante: self.composante() // changed to 'self'
},
processData: false,
contentType: "application/json;odata=verbose",
headers: "accept": "application/json;odata=verbose",
"If-Match": "*",
success: function(data) {
viewmodel.fetchdata();
}
});
}
}
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 对API数据使用声明性绑定
- 如何销毁/删除/取消绑定SnapSVG.js
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 数据绑定:'系统Char'不包含名为'xxxxx'
- react组件中的绑定方法
- 取消绑定/绑定单击jquery selectbox插件
- 如何使用 KNOCKOUTJS 模板绑定绑定依赖模板
- Knockoutjs:同时使用单击和选中绑定时绑定评估的顺序
- 使用敲除foreach绑定绑定方法名称