javascript
  • backbone.js
  • 2013-11-23 71 views 0 likes 
    0
    _.extend(object, Backbone.Events); 
    
    object.on("myalert:one", function(msg) { 
        document.body.innerHTML+=("eve1 " + ' msg:= '+msg+ ' ;name:= '+this.name); 
    },context); 
    
    
    object.on("myalert:two", function(msg) { 
        document.body.innerHTML+=(" eve2 " + ' msg:= '+msg+ ' ;name:= '+this.name); 
    }); 
    

    我想сall所有事件都依賴於這個對象與面具警報:。原因事件骨幹事件的數組:名稱

    object.trigger("myalert", "param"); 
    
    +0

    我不認爲你可以這樣命名空間事件。你可以使用模型屬性來完成它,因爲主幹將個別事件綁定到每個屬性以及一般事件。 http://backbonejs.org/docs/backbone.html –

    回答

    2

    沒有在任何Backbone.Events名字空間,但你可以添加你自己的。例如,像這樣:

    obj.trigger_matching = function(re) { 
        var args = [''].concat([].splice.call(arguments, 1)); 
        for(name in this._events) { 
         if(!name.match(re)) 
          continue; 
         args[0] = name; 
         this.trigger.apply(this, args); 
        } 
    }; 
    

    將允許你說obj.trigger_matching(/^myalert:/, 1, 2, 3)和正確的事情會發生。

    演示:http://jsfiddle.net/ambiguous/p8p5R/

    這將觸發多個'all'事件(每個this.trigger.apply),這可能會或可能不是你想要的是。如果不是,則將this.trigger.apply呼叫替換爲標準trigger的自定義版本,以便您最多可以觸發一個'all'事件。

    +0

    把這個放在列表上,作爲主幹應該關心的東西 –

    相關問題