【问题标题】:Backbone | Script for document ready骨干 |准备好文档的脚本
【发布时间】:2013-04-04 11:52:57
【问题描述】:

有一个脚本(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>");
                    }
                }
            });
        }
    }
});
});

谢谢

【问题讨论】:

  • 如果您的代码正在加载模板,那么您知道“DOM”何时加载,不是吗(这是在您将内容添加到页面之后)。视图应该包含脚本,而不是模板。
  • 我正在渲染一个视图,而视图正在加载模板。我认为它会在内部加载它,并且在加载模板时我无法找到一个点。
  • 如何渲染视图?在 Backbone 中它不是自动的。您需要调用render,在render 中,您可能会使用例如下划线的模板编译器来创建HTML,然后将其插入到DOM 中。请编辑您的问题,以详细说明您的困惑所在。
  • 我已经编辑了问题

标签: javascript templates backbone.js


【解决方案1】:

你应该有一个主视图的地方。您还包括样式表等。在页面底部的正文结束标记之前。在某些脚本标签中,只需执行 document.ready 即可。除非这也在模板中,在这种情况下,我会考虑在视图方面使用不同的结构。

如果您只想在准备加载一个模板时执行此操作,我会使用带有匿名函数的 succes。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多