2012-08-07 39 views
0

我instanciate ChildView幾次。在ChildViews中有一個觸發器。一旦觸發,將調用父項中的函數來設置模型。問題是,觸發器只觸發一次(至少我能看到),但父母收到兩個。我知道幽靈的意見,但我怎麼找到他們?我不使用全局命名空間,我使用require.js。觸發事件被接收兩次。如何找到幽靈視圖?

vParentView = require 'views/parentview' 

class vParentView 

    render: -> 
     view1 = new ChildView() 
     view1.on 'data changed', @updateModel, @ 
     view2 = new ChildView() 
     view2.on 'data changed', @updateModel, @ 
     view3 = new ChildView() 
     view3.on 'data changed', @updateModel, @ 
     etc... 

    updateModel: (data) -> 
     @model.set data.attr, data.options 

我刪除上下文@看哪個視圖觸發的UpdateModel()兩次,也許他們分別來自不同的看法,但他們沒有。所以,同一個視圖會觸發updateModel兩次。

編輯: 爲ChildView的代碼是有點無趣:

vChildView = require 'views/childview' 

class vChildView 

    events: 
     'change input.someclass': 'onChangeInput' 
     'change textarea.someclass': 'onChangeInput' 

    onChangeInput: (e) -> 
     @trigger 'data changed' 

    render: -> 
     html = _.template tpl 

     @$el.html html 


     @ 
+0

你有代碼爲視圖? – 2012-08-07 18:09:54

回答

0

多一點點你的代碼,將有助於(就像@Brendan Delumpa說的)

在像你這樣的情況發生,你不知道爲什麼和觸發它們的情況下,我通常在每個函數下放置一個console.log(''),就像這樣

class vParentView 

    render: -> 
     console.log 'vParentView -> render' 
     ... 

    updateModel: (data) -> 
     console.log 'vParentView -> updateModel' 
     ... 
在此之後

,如果我仍然不知道是哪裏的問題,我會在Developer Tools和步線添加一些破發點,由線到我會找到它觸發兩次同樣的事情

+0

這正是我所做的!這樣我發現觸發器只發送一次,但接收兩次。在ChildView中,所有日誌都正常記錄。我也使用開發工具來遍歷代碼,但它只傳遞一次updateModel。 :( – GijsjanB 2012-08-08 06:56:20