Skip to content
This repository has been archived by the owner on Apr 16, 2019. It is now read-only.

Prevent observable from converting this.backbone #13

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions demos/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
<html>
<head>
<title>Kendo UI and Backbone</title>
<link href="http://cdn.kendostatic.com/2012.1.322/styles/kendo.common.min.css" rel="stylesheet" />
<link href="http://cdn.kendostatic.com/2012.1.322/styles/kendo.default.min.css" rel="stylesheet" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2012.1.322/js/kendo.web.min.js"></script>
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>
<script src="kendo.backbone.js"></script>
<link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css" rel="stylesheet" />
<link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.default.min.css" rel="stylesheet" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
<script type="text/javascript" src="//da7xgjtj801h2.cloudfront.net/2014.2.716/js/kendo.all.min.js"></script>
<script src="js/build/web/kendo.backbone.js"></script>
</head>
<body>
<h3>Grid</h3>
Expand All @@ -20,6 +20,7 @@ <h3>Backbone collection</h3>
</pre>
<script>
var Product = Backbone.Model.extend({
idAttribute: "ProductID"
});

var ProductCollection = Backbone.Collection.extend({
Expand Down
61 changes: 61 additions & 0 deletions demos/public/popup.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<title>Kendo UI and Backbone</title>
<link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css" rel="stylesheet" />
<link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.default.min.css" rel="stylesheet" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
<script type="text/javascript" src="//da7xgjtj801h2.cloudfront.net/2014.2.716/js/kendo.all.min.js"></script>
<script src="js/build/web/kendo.backbone.js"></script>
</head>
<body>
<h3>Grid</h3>
<div id="grid">
</div>

<h3>Backbone collection</h3>
<pre id="log">
</pre>
<script>
var Product = Backbone.Model.extend({
idAttribute: "ProductID"
});

var ProductCollection = Backbone.Collection.extend({
model: Product
});

var products = new ProductCollection(
[
{ ProductID: 1, Name: "Food"}, { ProductID: 2, Name: "Coffee"}
]);

var ProductWrapper = kendo.backboneModel(Product, {
ProductID: { type: "number" },
Name: { type: "string" }
});

var ProductCollectionWrapper = kendo.backboneCollection(ProductWrapper);

products.on("change remove", function() {
$("#log").text(kendo.stringify(products.toJSON()));
});

$("#log").text(kendo.stringify(products.toJSON()));

$("#grid").kendoGrid({
editable: "popup",
toolbar: ["create"],
columns: ["ProductID", "Name", { command: ["edit", "destroy"] }],
dataSource: {
schema: {
model: ProductWrapper
},
data: new ProductCollectionWrapper(products)
}
});
</script>
</body>
</html>
6 changes: 3 additions & 3 deletions src/web/kendo.backbone.collection.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
init: function(collection) {
ObservableArray.fn.init.call(this, collection.models, model);

this.collection = collection;
this._collection = collection;
},

splice: function(index, howMany) {
Expand All @@ -24,13 +24,13 @@

if (removedItems.length) {
for (idx = 0, length = removedItems.length; idx < length; idx++) {
this.collection.remove(removedItems[idx].backbone);
this._collection.remove(removedItems[idx].backbone);
}
}

if (itemsToInsert.length) {
for (idx = 0, length = itemsToInsert.length; idx < length; idx++) {
this.collection.unshift(itemsToInsert[idx].backbone);
this._collection.unshift(itemsToInsert[idx].backbone);
}
}

Expand Down
5 changes: 3 additions & 2 deletions src/web/kendo.backbone.model.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@
model = new BackboneModel(model);
}

this.idField = model.idAttribute;
Model.fn.init.call(this, model.toJSON());
this.backbone = model;
this._backbone = model;
},
set: function(field, value) {
Model.fn.set.call(this, field, value);

this.backbone.set(field, value);
this._backbone.set(field, value);
}
});
}
Expand Down