我想我错过了一些简单的东西,但我找不到任何显示如何做到这一点的例子...另外,如果我使用的一些术语是错误的,请原谅我.
我只想使用绑定到Kendo Observable对象的HTML表单在我的远程数据源中创建一个新记录.
我见过的所有例子都显示了如何编辑现有记录,但这不是我想要的(至少目前不是这样).
我创建了一个小提琴http://jsfiddle.net/matbeard/fYfYz/2/,其中包含了迄今为止我所获得的简单截断版本.显然它不会实际保存记录,因为创建URL不指向任何地方,但我相信我可以处理它.
有人可以指点我正确的方向吗?谢谢.
因为没有它我就不能发一个问题,这里有一些从小提琴复制的代码:
var model = kendo.data.Model.define({
id: "id",
fields: {
id: { type: 'number' },
field1: { type: 'string' },
field2: { type: 'string' },
field3: { type: 'string' }
}
});
var viewModel = kendo.observable({
dataSource: new kendo.data.DataSource({
type: 'json',
transport: {
create: {
url: '/myurl/create',
dataType: 'json',
type: 'post'
}
},
schema: {
data: 'data',
model: model
}
});
});
kendo.bind($("#my-form"), viewModel);
Run Code Online (Sandbox Code Playgroud)
让我们略有不同......
DataSource因为您实际上并没有保存dataSource而只保存一条记录.因此,您应该将模型定义为:
var Model = kendo.data.Model.define({
id: "id",
fields: {
id: { type: 'number' },
field1: { type: 'string' },
field2: { type: 'string' },
field3: { type: 'string' }
}
});
Run Code Online (Sandbox Code Playgroud)
在DataSource现在成为一个对象每本身:
var dataSource = new kendo.data.DataSource({
type: 'json',
transport: {
create: "/myurl"
},
schema: {
model: Model
}
});
Run Code Online (Sandbox Code Playgroud)
并且您的可观察对象具有data元素,该元素是Modeldefined(new Model())的实例.
var viewModel = kendo.observable({
data: new Model(),
mySave: function(e){
console.log("this", this.data);
dataSource.add(this.data);
e.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
所以,你的表单现在应该是这样的:
<form id="my-form">
<input name="field1" data-bind="value:data.field1" type="text" />
<input name="field2" data-bind="value:data.field2" type="text" />
<input name="field3" data-bind="value:data.field3" type="text" />
<button data-bind="click: mySave">Save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
你的JSFiddle modiefied http://jsfiddle.net/6LHx3/4/
| 归档时间: |
|
| 查看次数: |
2904 次 |
| 最近记录: |