如何在基于远程数据源的 Kendo Observable 上设置值?
How do I set a value on a Kendo Observable when it is based on a remote datasource?
我需要从数据源获取的字段的默认值,并使用可观察对象绑定到该字段。 (如果需要,用户可以使用树视图更新该值)。我可以读取初始远程数据源,构建可观察对象并将值绑定到字段。然后我可以弹出一个对话框,显示一棵树和 return 值。我似乎无法做的是设置 observable 的值,因为它基于数据源,因此似乎是我在控制台中查看的更大更复杂的 json 对象。我还必须进行不同的绑定才能使其正常工作,如下所示。
下面如果只是一个片段,但应该给出一个想法。远程数据源 returns 只是:{"name":"a name string"}
<p>Your default location is currently set to: <span id="repName" data-bind="text: dataSource.data()[0].name"></span></p>
<script>
$(document).ready(function () {
var personSource2 = new kendo.data.DataSource({
schema: {
model: {
fields: {name: { type: "string" }}
}
},
transport: {
read: {
url: "https://my-domain/path/paultest.reportSettings",
dataType: "json"
}
}
});
personSource2.fetch(function(){
var data = personSource2.data();
console.log(data.length); // displays "1"
console.log(data[0].name); // displays "a name string"
var personViewModel2 = kendo.observable({
dataSource: personSource2
});
var json = personViewModel2.toJSON();
console.log(JSON.stringify(json));
observName1 = personViewModel2.get("dataSource.data.name");
console.log("read observable: "+observName1);
kendo.bind($(''#repName''), personViewModel2);
});
经过大量尝试,我设法获得了要绑定的值:
数据绑定="text: dataSource.data()[0].name"
但我无法在任何地方找到这个记录。
在我将 observable 输出到控制台的地方,我得到了一个很大的对象,而不是我期望的简单的 observable 数据结构。我怀疑我在这里遗漏了一些基本的东西!
我目前只是试图读取上面的可观察对象,但无法将其从 json 源中获取到 return 字符串。
personSource2.fetch(function(){
var data = personSource2.data();
console.log(data.length); // displays "1"
console.log(data[0].name); // displays "Jane Doe"
var personViewModel2 = kendo.observable({
dataSource: personSource2
});
var json = personViewModel2.toJSON();
console.log(JSON.stringify(json));
observName1 = personViewModel2.get("dataSource.data()[0].name");
console.log("read observable: "+observName1);
personViewModel2.set("dataSource.data()[0].name","Another Value");
observName1 = personViewModel2.get("dataSource.data()[0].name");
console.log("read observable: "+observName1);
kendo.bind($(''#repName''), personViewModel2);
});
我需要从数据源获取的字段的默认值,并使用可观察对象绑定到该字段。 (如果需要,用户可以使用树视图更新该值)。我可以读取初始远程数据源,构建可观察对象并将值绑定到字段。然后我可以弹出一个对话框,显示一棵树和 return 值。我似乎无法做的是设置 observable 的值,因为它基于数据源,因此似乎是我在控制台中查看的更大更复杂的 json 对象。我还必须进行不同的绑定才能使其正常工作,如下所示。
下面如果只是一个片段,但应该给出一个想法。远程数据源 returns 只是:{"name":"a name string"}
<p>Your default location is currently set to: <span id="repName" data-bind="text: dataSource.data()[0].name"></span></p>
<script>
$(document).ready(function () {
var personSource2 = new kendo.data.DataSource({
schema: {
model: {
fields: {name: { type: "string" }}
}
},
transport: {
read: {
url: "https://my-domain/path/paultest.reportSettings",
dataType: "json"
}
}
});
personSource2.fetch(function(){
var data = personSource2.data();
console.log(data.length); // displays "1"
console.log(data[0].name); // displays "a name string"
var personViewModel2 = kendo.observable({
dataSource: personSource2
});
var json = personViewModel2.toJSON();
console.log(JSON.stringify(json));
observName1 = personViewModel2.get("dataSource.data.name");
console.log("read observable: "+observName1);
kendo.bind($(''#repName''), personViewModel2);
});
经过大量尝试,我设法获得了要绑定的值: 数据绑定="text: dataSource.data()[0].name" 但我无法在任何地方找到这个记录。 在我将 observable 输出到控制台的地方,我得到了一个很大的对象,而不是我期望的简单的 observable 数据结构。我怀疑我在这里遗漏了一些基本的东西! 我目前只是试图读取上面的可观察对象,但无法将其从 json 源中获取到 return 字符串。
personSource2.fetch(function(){
var data = personSource2.data();
console.log(data.length); // displays "1"
console.log(data[0].name); // displays "Jane Doe"
var personViewModel2 = kendo.observable({
dataSource: personSource2
});
var json = personViewModel2.toJSON();
console.log(JSON.stringify(json));
observName1 = personViewModel2.get("dataSource.data()[0].name");
console.log("read observable: "+observName1);
personViewModel2.set("dataSource.data()[0].name","Another Value");
observName1 = personViewModel2.get("dataSource.data()[0].name");
console.log("read observable: "+observName1);
kendo.bind($(''#repName''), personViewModel2);
});