我尝试在asp.new mvc应用程序中使用AngndoJS的KendoUI网格执行简单任务。它是从mvc控制器到网格的绑定数据。
asp.net mvc控制器方法:
public ActionResult GetCdcReport()
{
var testJson =
@"{ProductID:'1',ProductName:'Chai',UnitPrice:'18',UnitsInStock:'39',Discontinued:'false'}";
var json = JObject.Parse(testJson);
return new JSONNetResult(json);
}
angularjs服务功能:
function getImportResultReport() {
return httpPost('getCdcReport');
}
数据绑定组件的代码:
$scope.mainGridOptions = {
columns: [
{ field: "ProductID", title: "ID" },
{ field: "ProductName", title: "Product Name" },
{ command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
],
pageable: true,
dataSource: {
pageSize: 5,
transport: {
read: function (e) {
dataservice.getImportResultReport().
success(function (data) {
e.success(data);
}).
error(function (data, status) {
alert('something went wrong');
console.log(status);
});
}
}
}
};
我看到调用了服务器方法,但在控制台中我遇到了以下客户端错误:
dataservice.getImportResultReport(...)。success不是函数
在类似的问题中,我读到了:
$ http遗留承诺方法成功与错误 弃用。请改用标准方法。
我替换了以下的绑定代码:
$scope.mainGridOptions = {
columns: [
{ field: "ProductID", title: "ID" },
{ field: "ProductName", title: "Product Name" },
{ command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
],
pageable: true,
dataSource: {
pageSize: 5,
transport: {
read: function (e) {
dataservice.getImportResultReport().
then(function (data) {
return data;
});
}
}
}
};
之后我没有收到此错误,但网格没有数据。
我也试过这样做:
vm.mainGridOptions = {
columns: [
{ field: "ProductID", title: "ID" },
{ field: "ProductName", title: "Product Name" },
{ command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
],
pageable: true
};
$scope.mainGridOptions.DataSource = dataservice.getImportResultReport();
它也不起作用。
我做错了什么?
来自telerik网站的例子。如果绑定逻辑在dataservice.getImportResultReport()
上重新$http.jsonp('URL FROM EXAMPLE')
,则可以正常工作。