【发布时间】:2014-03-03 16:46:58
【问题描述】:
我正在尝试将页面字段添加到我的数据源结果中。我正在使用 schema.parse 来对齐字段名称、添加几个字段和一些基本的数据操作。我要添加的字段之一是数据源的当前页面。我可以使用 datasource.page() 方法,但它只会在数据源返回数据后更新,并且显然 schema.parse 在此之前发生。我正在寻找另一种方法来访问数据源的参数或使用跳过/总计参数以某种方式计算当前页面。
var ds = new kendo.data.DataSource({
transport: {
read: {
url: PRODUCTAPI,
data: getOfferData()
}
},
serverPaging: true,
pageSize: 50,
schema: {
data: "results",
total: "count",
model: { id: "id" },
parse: function(response) {
var myData = {};
var results = [];
prodcnt = response.results.length;
for (var i = 0; i < response.results.length; i++) {
var prod = response.results[i];
var product = {
id: prod.id,
category: prod.category,
page: ??? // this is where I would like to know this.page()
// other fields here
prev_record: null,
next_record: null
};
results.push(product);
}
// do other stuff here
return myData;
}
},
change: function(e) {
// I can access page() from here!
var pg =this.page();
console.log("page: " + pg);
}
});
编辑:我正在做的是这个。使用列表视图上的数据单击我正在调用详细视图。详细视图访问单击元素的 UID,并使用 getByUID 从数据集中获取整个记录。在详细视图中,用户可以使用 Next/Prev 按钮来翻阅详细记录,而无需返回到列表视图。这很好用,但如果用户到达数据源的边界,我需要知道他们从哪个页面开始,以便手动调用 datasource.page(x)。我尝试通过数据源对象返回,但没有成功。我认为另一种方法是在运行时将其包含在数据中。
【问题讨论】:
-
如果使用 ds.page() 会怎样?
-
ds.page() 显示上一次调用的页码。
-
但是您真的需要将页面添加到您的模型中吗?如果您更改订单,添加/删除记录,......怎么办?或者您只需要检索
change事件中的页码? -
@OnaBai,我已经更新了问题以澄清。数据源是只读源(至少在本次使用中),因此重新排序不是问题。到 change 事件触发时,数据已返回。
标签: jquery kendo-ui kendo-mobile