Kendo MVVM使用远程数据源创建新记录
我想我遗漏了一些简单的东西,但我找不到任何例子来说明如何做到这一点。。。另外,如果我使用的一些术语是错误的,请原谅我 我只想使用绑定到剑道可观察对象的HTML表单在远程数据源中创建一条新记录 我看到的所有示例都显示了如何编辑现有记录,但这不是我想要的(至少目前不是) 我已经创造了一个小提琴与一个简单的削减版本,我已经有了。很明显,它实际上不会保存记录,因为创建URL不会指向任何地方,但我相信我可以处理这个问题 谁能给我指一下正确的方向吗?谢谢 因为我不能发布一个没有它的问题,这里有一些从小提琴上复制的代码:Kendo MVVM使用远程数据源创建新记录,mvvm,kendo-ui,Mvvm,Kendo Ui,我想我遗漏了一些简单的东西,但我找不到任何例子来说明如何做到这一点。。。另外,如果我使用的一些术语是错误的,请原谅我 我只想使用绑定到剑道可观察对象的HTML表单在远程数据源中创建一条新记录 我看到的所有示例都显示了如何编辑现有记录,但这不是我想要的(至少目前不是) 我已经创造了一个小提琴与一个简单的削减版本,我已经有了。很明显,它实际上不会保存记录,因为创建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);
让我们做的稍微不同
- 您的表单不需要(应该)绑定到包含
,因为您实际上并没有保存数据源,而是保存一条记录数据源的and对象
var Model = kendo.data.Model.define({
id: "id",
fields: {
id: { type: 'number' },
field1: { type: 'string' },
field2: { type: 'string' },
field3: { type: 'string' }
}
});
数据源
现在本身成为一个对象:
var dataSource = new kendo.data.DataSource({
type: 'json',
transport: {
create: "/myurl"
},
schema: {
model: Model
}
});
您的可观察对象具有数据
元素,该元素是定义的模型(新模型()
)的实例
因此,您的表单现在应该是:
<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>
拯救
您修改的JSFIDLE让我们做一些稍微不同的事情
- 您的表单不需要(应该)绑定到包含
数据源的and对象
,因为您实际上并没有保存数据源,而是保存一条记录
因此,您应该将模型定义为:
var Model = kendo.data.Model.define({
id: "id",
fields: {
id: { type: 'number' },
field1: { type: 'string' },
field2: { type: 'string' },
field3: { type: 'string' }
}
});
数据源
现在本身成为一个对象:
var dataSource = new kendo.data.DataSource({
type: 'json',
transport: {
create: "/myurl"
},
schema: {
model: Model
}
});
您的可观察对象具有数据
元素,该元素是定义的模型(新模型()
)的实例
因此,您的表单现在应该是:
<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>
拯救
你的JSFIDLE修改了,这比我想象的要简单得多。非常感谢。事实上,如果您甚至没有考虑重用数据源,您甚至不需要使用数据源,您可以发布Ajax帖子或定义一个正常的HTML表单(没有可观察的对象),并让服务器管理它。数据源,可观察对象,。。。当您在页面的不同位置使用相同的信息并希望自动更新时,它非常方便。嗨,OnaBai。我发现Observable对象非常有用,因为我有几个与远程数据绑定的下拉列表——进行选择会更新各种其他字段的值。这对于可观察的物体来说很简单。然而,我还有一个问题,希望很简单。。。使用ssowDataSource.add(this.data)保存数据后代码>如何从服务器捕获响应以获取新记录id?非常感谢你的帮助!没关系。。。我可以使用数据源的requestEnd函数。谢谢你的帮助。这比我想的要简单得多。非常感谢。事实上,如果您甚至没有考虑重用数据源,您甚至不需要使用数据源,您可以发布Ajax帖子或定义一个正常的HTML表单(没有可观察的对象),并让服务器管理它。数据源,可观察对象,。。。当您在页面的不同位置使用相同的信息并希望自动更新时,它非常方便。嗨,OnaBai。我发现Observable对象非常有用,因为我有几个与远程数据绑定的下拉列表——进行选择会更新各种其他字段的值。这对于可观察的物体来说很简单。然而,我还有一个问题,希望很简单。。。使用ssowDataSource.add(this.data)保存数据后代码>如何从服务器捕获响应以获取新记录id?非常感谢你的帮助!没关系。。。我可以使用数据源的requestEnd函数。谢谢你的帮助。