Кендо Grid обновление и вставка с JayData и угловой
Я попытался использовать сетку кендо с помощью операции crud, которая взаимодействует с Jaydata и angularjs для создания источника данных и реализации операции Crud. Но когда я обновляю или создаю запись после отправки на сервер, у меня возникает ошибка в kendo.js файла jayadataModules.because из-за функции сохранения of entity in angular (в jaydataModules) возвращает объект обещания, который содержит catch, finaly, затем функцию и не имеет функции fail.
вот мой контекст джайдаты:
(function(global, $data, undefined) {
$data.Entity.extend('ComplexEntity', {
'Name': { 'type': 'Edm.String' },
'Created': { 'type': 'Edm.DateTime', 'nullable': false, 'required': false },
'Index': {'key':true,'computed': true, 'type': 'Edm.Int32', 'nullable': false, 'required': true },
'LargeNum': { 'type': 'Edm.Int64', 'nullable': false, 'required': true }
});
$data.generatedContexts = $data.generatedContexts || [];
$data.generatedContexts.push(TestContext.Container);
})(window, $data);
app.js:
var app = angular.module('app', ['jaydata']);
DataSource.js:
app.factory('dataSource', ['$data', function ( $data) {
return {
get: function (serviceUri) {
debugger;
var context = new $data.initService(serviceUri);
return context;
}
};
}]);
грид-directive.js:
app.directive('crudGrid', function () {
return {
restrict: 'A',
scope:{
ds:'=',
},
controller: function ($scope,$element,$attrs, $data, dataSource) {
serviceUri = '/odata';
var tag = $element;
var context = dataSource.get(serviceUri);
context.then(function (db) {
ds = db.ComplexEntity.asKendoDataSource();
kendo.init($("#" + tag[0].id));
}).fail(function (args) {
//some code here
});
}
}
});
ComplexEntityController:
public class ComplexEntityController :ODataController
{
[Queryable]
public IQueryable<ComplexEntity> Get(ODataQueryOptions<ComplexEntity> options)
{
return complexList.AsQueryable();
}
public HttpResponseMessage Post(ComplexEntity entity)
{
if (ModelState.IsValid)
{
// some code here
return Request.CreateResponse<ComplexEntity>(entity);
}
else
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
public ComplexEntity Patch(int key, Delta<ComplexEntity> patch)
{
var entity = complexList.First(t => t.Index == key);
patch.Patch(entity);
return entity;
}
}
Index.cshtml:
<link href="~/Content/kendo/2013.1.514/kendo.common.min.css" rel="stylesheet" />
<link href="~/Content/kendo/2013.1.514/kendo.default.min.css" rel="stylesheet" />
<link href="~/Content/kendo/2013.1.514/kendo.rtl.min.css" rel="stylesheet" />
<script src="~/Scripts/angular-1.2.0-rc.2/angular.js"></script>
<script src="~/Scripts/datajs-1.0.3.min.js"></script> <script src="~/Scripts/jaydata-1.3.6/jaydata.js"></script>
<script src="~/Scripts/jaydata-1.3.6/jaydatamodules/deferred.js"></script>
<script src="~/Scripts/jaydata-1.3.6/jaydatamodules/angular.js"></script>
<script src="~/Scripts/kendo/2013.1.514/kendo.all.min.js"></script>
<script src="~/Scripts/kendo/2013.1.514/kendo.web.min.js"></script>
<script src="~/Scripts/kendo/2013.1.514/kendo.aspnetmvc.min.js"></script> <script src="~/Scripts/jaydata-1.3.6/jaydatamodules/kendo.js"></script>
<script src="~/Scripts/ViewModels.js"></script> <script src="~/Scripts/App/app.js"></script> <script src="~/Scripts/App/Services/DataSource.js"></script>
<script src="~/Scripts/App/Controller/FillGrid.js"></script>
<script src="~/Scripts/App/Directives/grid-directive.js"></script>
<div class="k-rtl" style="margin-right:10px; width:1000px;float:right;">
<div id="mvvmGrid" crud-grid data-role="grid"
data-selectable="true" data-height="450"
data-sortable="true"
data-editable="inline"
data-filterable="true"
data-toolbar='["create", "save", "cancel"]'
data-columns='[
{ field: "Name", width: "180px" },
{ field: "Created", width: "200px" },
{ field: "LargeNum", width: "180px" },
{ field: "Index",hidden:true },
{ command :["edit", "destroy", "update"]}
]'
data-pageable="{ refresh: true, pageSizes: true }"
data-source="ds" />
</div>
</div>
когда я обновляю запись, у меня появляется ошибка: "undefined не является функцией" в kendo.js в этой строке:
model[0].innerInstance().save().then(function (item) {
options.success();
}).fail(function () {
options.error({}, arguments);
});
потому что функция сохранения не имеет функции сбоя. Где моя ошибка?