2016-05-29 48 views
0

假設視圖綁定必須觀察模型道具,我怎樣才能從另一個狀態的狀態變化觸發狀態變化?例如,第二國可能是衍生道具還是兒童道具?&符州 - 如何從外部國家觀察國家支柱變化?

+1

一個簡單的方法是'listenTo'你的模型https://ampersandjs.com/docs/#ampersand-events-listento。你也可以在道具中定義你的第一個狀態,並且創建第二個狀態(如果你願意的話)。然後在初始化過程中,您只需將第一個狀態傳遞給構造函數。 – amberv

回答

0

正確的&符視圖綁定必須遵守當前模型(&符號 - 狀態)。

爲了當前狀態爲「聽」到另一國,則可以使用的數據類型「狀態」,例如包括第二狀態作爲當前狀態的道具:

import State from 'ampersand-state'; 

export default State.extend({ 
    __name: 'ConnectionState', 
    idAttribute: 'site_id', 
    props: { 
     site_id: ['any', true], 
     message_group_id: ['any', true], 
     message_group: ['state'], 

然後當初始化狀態,設置有第二狀態的狀態道具:

let messageGroups = new MessageGroupsCollection(state.messageGroups); 
let connections = new ConnectionsCollection(state.connections); 

connections.forEach((model) => { 
    model.set('message_group', messages.get(model.get('message_group_id'))); 
}); 

現在您的視圖(通過國家的支持),您可以綁定到其他國家,如:

bindings: { 
    'model.message_group.is_hired': { 
     hook: 'isHired', 
     type: 'toggle' 
    } 
}, 

現在,當您對message_group.is_hired進行更改時,它將反映在Connection綁定中。