Backbone.js在View提交事件时执行Model fetch
Backbone.js perform Model fetch upon View submit event
在Backbone.View中,我有一个表单。提交后,我想执行一个model.fetch()。我该如何以正确的Backbone.js MVC方式实现这一点?
方法A,看起来风格不好。
//in my Backbone.View:
events: {'submit form#frm-destination': 'setDestination'},
setDestination: function(event){
event.preventDefault();
var destination = $('#destination').val();
this.model.fetch({
data : {
address : destination,
}
});
},
方法B:有没有一种方法我可以写一个路由器,让它听我的视图的提交事件?
///in my Backbone.Router
this.listenTo(this.view, 'submit', this.onFormSubmit);
...
onFormSubmit: function(){
console.log('caught button push!');
},
不幸的是,以上内容不起作用。
我自己找到了一个解决方案:
我定义了一个新的模型:
var DestinationModel = Backbone.Model.extend({});
在我的路由器中,我有:
intialize: function(){
_.bindAll(this,'onDestinationChange');
this.modelToFetchModel = newMyModel();
this.destinationModel = new DestinationModel();
this.destinationView = new DestinationView({ model : this.destinationModel });
this.listenTo(this.destinationModel, 'change', this.onManualDestination);
},
onDestinationChange: function(model){
this.modelToFetchModel.fetch({ data : { address : model.get('destination') } });
}
我的观点是这样的:
var DestinationView = Backbone.View.extend({
events: {'submit form#frm-destination': 'setDestination'},
initialize: function(){
_.bindAll(this,'setDestination');
}
setDestination: function(event){
event.preventDefault();
var destination = $('#destination').val();
this.model.set('address',destination);
}
});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Ember Data DS.Model's set函数不起作用
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 在ng-model被设置为select>之前,Ng-change执行
- Strongloop -使用model.js执行PHP
- Backbone.js在View提交事件时执行Model fetch