我希望运行一个脚本(js),如$(document).ready()。有一种方法可以在模板(例如home_tpl.html)文件中编写脚本。但我相信这不是一个好方法。
我从骨干视图加载html。我没有使用像marionate这样的任何其他包装器。在这里,我希望在加载模板(加载DOM)时运行一些脚本。我可以用哪种方式编写脚本?
这是视图的渲染
reset: function(key, email){
require(['js/views/reset_password', 'js/models/forgot_password'], function(ResetView, ResetModel){
var resetModel = new ResetModel();
resetModel.set('key', key);
resetModel.set('email', email);
$('body').html(new ResetView({model: resetModel}).render().el);
});
},
这是视图代码
define(['text!tpl/reset_passwordtpl.html'],function(Template){
return Backbone.View.extend({
template: _.template(Template),
render: function(){
$(this.el).html(this.template());
return this;
},
events: {
"click #btn_reset_password": "reset"
},
reset: function(){
if($('#reset_password').val() != $('#confirm_reset_password').val()){
$('#error_message').text('Passwords mismatched').show();
}
else{
$.ajax({
url: server_url + 'reset',
type:'POST',
dataType:"json",
data: {'id': this.model.get('email'), 'key': this.model.get('key'), 'new_password': $('#reset_password').val()},
success:function (data) {
if(data.error) { // If there is an error, show the error messages
$('.alert-error').text(data.error.text).show();
}
else { // If not, send them back to the home page
$("#content").html("<h6>Your password is reset. Click <a href='#login'>here</a> to login.</h6>");
}
}
});
}
}
});
});
感谢
答案 0 :(得分:-1)
某处你应该有一个主视图。你还包括样式表等的地方。在正文结束标记之前的页面底部。在一些脚本标签中,只需执行document.ready事务。除非在模板中也是如此,否则在考虑视图时我会考虑使用不同的结构。
如果您只想在一个模板准备好加载时执行此操作,我将使用带有匿名函数的成功。