Commit 27850eac authored by Stephen Sawchuk's avatar Stephen Sawchuk

Merge pull request #578 from stephenplusplus/canjs_require

restructured canjs_require + code style.
parents d59b2617 ac44ecc6
/*global require*/
/*global require */
require.config({
paths: {
jquery: '../bower_components/jquery/jquery',
......@@ -6,35 +6,41 @@ require.config({
}
});
require(['can/util/library', 'can/route', 'app/todos', 'app/models/todo', 'can/view/ejs', 'can/view/mustache'],
function (can, route, Todos, Model) {
'use strict';
require([
'can/util/library',
'can/route',
'controls/todos',
'models/todo',
'can/view/ejs',
'can/view/mustache'
], function (can, route, Todos, Model) {
'use strict';
// Set up a route that maps to the `filter` attribute
route(':filter');
// Delay routing until we initialized everything
route.ready(false);
// Set up a route that maps to the `filter` attribute
route(':filter');
// Delay routing until we initialized everything
route.ready(false);
// View helper for pluralizing strings
can.Mustache.registerHelper('todoPlural', function (str, attr) {
return str + (attr.call(this.todos) !== 1 ? 's' : '');
});
// View helper for pluralizing strings
can.Mustache.registerHelper('todoPlural', function (str, attr) {
return str + (attr.call(this.todos) !== 1 ? 's' : '');
});
// Find all Todos
Model.findAll({}, function (todos) {
// Wire it up. Instantiate a new Todos control
new Todos('#todoapp', {
// The (Todo) model that the control should use
Model: Model,
// The list of Todos retrieved from the model
todos: todos,
// The control state for filtering the view (in our case the router)
state: can.route,
// The view to render
view: 'views/todos.mustache'
});
// Find all Todos
Model.findAll({}, function (todos) {
// Wire it up. Instantiate a new Todos control
new Todos('#todoapp', {
// The (Todo) model that the control should use
Model: Model,
// The list of Todos retrieved from the model
todos: todos,
// The control state for filtering the view (in our case the router)
state: can.route,
// The view to render
view: 'views/todos.mustache'
});
// Now we can start routing
route.ready(true);
});
// Now we can start routing
route.ready(true);
});
/*global define*/
define(['can/util/library', 'can/control'], function (can, Control) {
/*global define, window */
/*jshint newcap:false */
define([
'can/util/library',
'can/control'
], function (can, Control) {
'use strict';
var ENTER_KEY = 13;
......@@ -26,8 +30,8 @@ define(['can/util/library', 'can/control'], function (can, Control) {
text: value,
complete: false
}).save(function () {
el.val('');
});
el.val('');
});
}
},
......@@ -112,4 +116,4 @@ define(['can/util/library', 'can/control'], function (can, Control) {
});
return Todos;
});
\ No newline at end of file
});
/*global define*/
define(['can/util/library', 'can/model'], function (can, Model) {
/*global define, window */
/*jshint newcap:false */
define([
'can/util/library',
'can/model'
], function (can, Model) {
'use strict';
var LocalStorage = Model({
// Implement local storage handling
localStore: function (cb) {
var name = this.name,
data = JSON.parse(window.localStorage[name] || (window.localStorage[name] = '[]')),
res = cb.call(this, data);
var name = this.name;
var data = JSON.parse(window.localStorage[name] || (window.localStorage[name] = '[]'));
var res = cb.call(this, data);
if (res !== false) {
can.each(data, function (todo) {
delete todo.editing;
});
window.localStorage[name] = JSON.stringify(data);
}
},
......@@ -19,8 +25,8 @@ define(['can/util/library', 'can/model'], function (can, Model) {
findAll: function () {
var def = new can.Deferred();
this.localStore(function (todos) {
var instances = [],
self = this;
var instances = [];
var self = this;
can.each(todos, function (todo) {
instances.push(new self(todo));
});
......@@ -54,7 +60,8 @@ define(['can/util/library', 'can/model'], function (can, Model) {
},
update: function (id, attrs) {
var def = new can.Deferred(), todo;
var def = new can.Deferred();
var todo;
this.localStore(function (todos) {
for (var i = 0; i < todos.length; i++) {
if (todos[i].id === id) {
......@@ -70,5 +77,4 @@ define(['can/util/library', 'can/model'], function (can, Model) {
}, {});
return LocalStorage;
});
\ No newline at end of file
});
/*global define*/
define(['can/util/library', 'can/observe', 'app/models/localstorage'], function (can, Observe, LocalStorage) {
/*global define */
/*jshint newcap:false */
define([
'can/util/library',
'can/observe',
'models/localstorage'
], function (can, Observe, LocalStorage) {
'use strict';
// Basic Todo entry model
......@@ -37,10 +42,10 @@ define(['can/util/library', 'can/observe', 'app/models/localstorage'], function
// Returns a new can.Observe.List that contains only the Todos
// matching the current filter
byFilter: function(filter) {
byFilter: function (filter) {
var filtered = new Observe.List();
can.each(this, function(todo) {
if(todo.matches(filter)) {
can.each(this, function (todo) {
if (todo.matches(filter)) {
filtered.push(todo);
}
});
......@@ -48,7 +53,7 @@ define(['can/util/library', 'can/observe', 'app/models/localstorage'], function
},
// Returns the list to display based on the currently set `filter`
displayList: function() {
displayList: function () {
return this.byFilter(this.attr('filter'));
}
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment