<% }) %>
<% if (state.isEditing) { %>
Save
<% } %>
Slide 17
Slide 17 text
Mustache
{{#libraries}}
{{name}}
{{/libraries}}
{{#state.isEditing}}
Save
{{/state.isEditing}}
Slide 18
Slide 18 text
CONTROLLERS
Controller
Model View
events
m
odify
Slide 19
Slide 19 text
can.Control
var Control = can.Control({
init: function (ele, options) {
…
}
});
var control = new Control('#main’, {});
Slide 20
Slide 20 text
can.Control
'.btn_save click': function (ele, ev) {
},
'.name keyup': function (ele, ev) {
}
Slide 21
Slide 21 text
Other Goodies
•Validations
•Dirty attributes
•Fixtures
•Handlebars helpers
(Transformations, filters)
Slide 22
Slide 22 text
DEMO
Slide 23
Slide 23 text
WHY?
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
LEARNING CURVE
A subjective comparison
Slide 26
Slide 26 text
BACKBONE
Confused
Slide 27
Slide 27 text
EMBER
“We frequently receive feedback from new developers about
how frustrating it can be to get started with Ember”
Yehuda Katz & Tom Dale
http://emberjs.com/blog/2013/03/21/making-ember-easier.html
Slide 28
Slide 28 text
ANGULAR
Wow
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
Convenience / Magic
Easier to Learn
Slide 31
Slide 31 text
They way you already know,
is most likely the right way.
Slide 32
Slide 32 text
ANGULAR
function Ctrl($scope, $element) {
$(‘.tree’, $element).dynatree({});
}
Slide 33
Slide 33 text
That’s not the
Angular way!
You should use
directives!
Slide 34
Slide 34 text
CAN
init: function (element, options) {
$(‘.tree’, element).dynatree({});
…
}
Yay!