我无法开始将表单绑定到Kendo UI中的远程数据源以获取javascript
我已经验证了ajax调用返回了正确的JSONP
有效负载,例如:
jQuery31006691693527470279_1519697653511([{"employee_id":1,"username":"Chai"}])
以下是代码:
<script type="text/javascript">
$(document).ready(function() {
var viewModel = kendo.observable({
employeeSource: new kendo.data.DataSource({
transport: {
read: {
url: baseUrl + "/temp1",
dataType: "jsonp"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {
models: kendo.stringify(options.models)
};
}
return options;
}
},
batch: true,
schema: {
model: {
id: "employee_id",
fields:{
employee_id: { type: "number" },
username: { type: "string" }
}
}
}
}),
hasChanges: false,
save: function() {
this.employeeSource.sync();
this.set("hasChanges", false);
},
change: function() {
this.set("hasChanges", true);
}
});
kendo.bind($("#item-container"), viewModel);
viewModel.employeeSource.read();
});
</script>
<div id="item-container">
<div class="row">
<div class="col-xs-6 form-group">
<label>Username</label>
<input class="form-control k-textbox" type="text" id="username" data-bind="value: username, events: { change: change }" />
</div>
</div>
<button data-bind="click: save, enabled: hasChanges" class="k-button k-primary">Submit All Changes</button>
</div>
没有引发任何错误,但我希望我的username
文本表单字段填充值&#39; Chai&#39;等等..但它不会
答案 0 :(得分:0)
您的文本框绑定到username
属性,但这在您的视图模型中不存在,也不会在任何位置填充。假设您的数据源在调用read()
后正确占用了员工,则需要将其解压缩并使用以下内容将其设置到您的viewmodel中:
change: function(e) {
var data = this.data();
if (data.length && data.length === 1) {
this.set("employee", data[0]);
this.set("hasChanges", true);
}
}
并修改这样的绑定:
<input class="form-control k-textbox" type="text" id="username"
data-bind="value: employee.username, events: { change: change }" />
您还应该知道在其他情况下会引发change
事件,因此如果您开始使用数据源进行更新,则需要调整该代码以考虑其类型请求。有关详细信息,请参阅event documentation。希望这会有所帮助。