骨干,触发视图事件

时间:2016-02-04 20:36:19

标签: javascript backbone.js backbone-views

嗨我试图在视图初始化函数中进行一些dom修改后触发视图事件

编辑:对不起我的问题,目前尚不清楚。这是一个完整的代码示例。最后,我发现我在添加课程之前触发了更改事件..感觉如此愚蠢,但我挣扎了好几个小时! 感谢您的支持!

    <script src="https://code.jquery.com/jquery-1.12.0.js"></script>
    <script src="http://underscorejs.org/underscore.js"></script>
    <script src="http://backbonejs.org/backbone.js"></script>
    <script type="text/javascript">
    var App = {};

    (function($) {

        App.FormView = Backbone.View.extend({
                events: {
                    "change .autofill" : "autofill"
                },

                initialize : function() {
                    _.bindAll(this, "autofill");

                    this.formelements = {"input" : {"autofill" : true}};

                    for(var elementId in this.formelements){
                        if(this.formelements[elementId].autofill){
                            var $el = $("#"+elementId);
                            //$el.trigger("change").addClass("autofill")//does not work trigger before class added :-(
                            $el.addClass("autofill").trigger("change");
                        }
                    }
                },

                autofill : function(e){
                    console.log("ok");
                }
        });     

        App.init = function(containerId){
            new App.FormView({el : "#"+containerId});
        }
    })(jQuery);
    </script>


    <div id="container">
        <input type="checkbox" id="input" />
    </div>
    <script type="text/javascript">
        App.init("container");
    </script>

1 个答案:

答案 0 :(得分:1)

您正尝试在尚未包含在DOM中的元素上触发事件。这不起作用,你必须在视图渲染后触发你的事件。

我不确切知道你如何渲染,但考虑this

var View = Backbone.View.extend({

  events: {
    'change input': 'autofill'
  },

  render: function() {
    this.$el.html('<input>');
    this.$('input').trigger('change');
  },

  autofill: function(e) {
    console.log('ohai thar');
  }

});

var view = new View({
  el: $('#root')
});
view.render();

当在添加到文档的元素上触发事件时,它会被拾取。

相关问题