Mustache can map not only specific values to template, but also results of the functions, which is sometimes handy. There is example.
But recently, when I was using this feature inside of CanJS template, it only rendered results for the first time and did nothing when values were changing. This was not working properly:
As I found out, problem was that it was missing proper value invocation and simply calling values via attr method fixes the problem.
This works fine:
But recently, when I was using this feature inside of CanJS template, it only rendered results for the first time and did nothing when values were changing. This was not working properly:
can.Component.extend({
tag: "sum",
scope: {
model: new can.Model({x: 2, y:3}),
result: function() {
return this.model.x * this.model.y;
}
},
template: '<input can-value="model.x">*<input can-value="model.y">={{result}}'
});
As I found out, problem was that it was missing proper value invocation and simply calling values via attr method fixes the problem.
This works fine:
can.Component.extend({
tag: "sum",
scope: {
model: new can.Model({x: 2, y:3}),
result: function() {
return this.model.attr('x') * this.model.attr('y');
}
},
template: '<input can-value="model.x">*<input can-value="model.y">={{result}}'
});