我开始学习骨干用这个简单的例子:当“添加”按钮被按下简单的骨干例如没有更新的观点
<div id="counter">unkown</div>
<button id="add-button">ADD</button>
(function($){
var Counter = Backbone.Model.extend({
defaults: {
count: 0
}
});
var CounterView = Backbone.View.extend({
el: "#counter",
events: {
"click #add-button": "add"
},
add: function() {
this.model.count++;
render();
},
render: function() {
$(this.el).text(this.model.get("count"));
return this;
},
initialize: function(){
this.render();
}
});
var counterItem = new Counter();
var counterView = new CounterView({model: counterItem});
}(jQuery)); // function($)
所以计数器应该增加,认为应该更新。我绑定了视图和模型,并将click事件与add函数关联,但不知何故,这不起作用。
所以我想我做错了什么或我只是缺少一些约束?
编辑:固定的建议这个......仍然没有工作:
<div class="list">
<div id="counter">unkown</div>
<button id="add-button">ADD</button>
</div>
(function($){
var Counter = Backbone.Model.extend({
defaults: {
count: 0
}
});
var CounterView = Backbone.View.extend({
el: "#counter",
events: {
"click #add-button": "add"
},
add: function() {
alert("ADD");
this.model.set("count", this.model.get("count") + 1);
this.render();
},
render: function() {
$(this.el).text(this.model.get("count"));
return this;
},
initialize: function(){
this.render();
}
});
var counterItem = new Counter();
var counterView = new CounterView({model: counterItem});
}(jQuery)); // function($)
编辑:固定和工作
<div id="counterHolder">
<div id="counter">
<span>unknown</span>
<button id="add-button">ADD</button>
</div>
</div>
<script>
(function($){
var Counter = Backbone.Model.extend({
defaults: {
count: 0
},
increase: function(){
this.set("count", this.get("count") + 1);
}
});
var CounterView = Backbone.View.extend({
el: "#counter",
events: {
"click #add-button": "add"
},
add: function() {
this.model.increase();
},
render: function() {
$("#counter span").text(this.model.get("count"));
return this;
},
initialize: function(){
this.render = _.bind(this.render, this);
this.render();
this.model.bind('change:count', this.render);
}
});
var counterItem = new Counter();
var counterView = new CounterView({model: counterItem});
}(jQuery)); // function($)
</script>
如果你甚至无法获得最简单的示例运行并需要发布求助信息,那就太令人讨厌了。我正在使用Batman.js。 Buh-bye Backbone! – Ringo 2012-08-12 17:11:46
这显示了我未定义的'$(“#counter span”).text(this.model.count);'如何访问模型的直接属性,例如'this.model.count' – imdadhusen 2013-06-10 05:42:41
模型属性通过get call来访问(看看Backbone文档)... this.model.get(“count”) – Drejc 2013-06-10 06:42:19