2017-11-07 4 views
0

Man kann einen vuex Speicher Getter erstellen, die einen Parameter Argument wie hier abgebildet: https://vuex.vuejs.org/en/getters.htmlvuex Getter mit dem Argument in Typoskript geschrieben

Ich verwende Typoskript (https://github.com/hmexx/vue_typescript_starter_kit) mein Code zu schreiben, aber ich kann nicht verstehen heraus, wie man einen Getter schreibt, der ein Parameterargument benötigt. dh das folgende nicht zu funktionieren scheint:

export function getItemById(state : State, id : Number) : MyItem | undefined  { 
    if(id === undefined) { 
    return undefined; 
    } 
    for(const item of state.items) { 
    if(item.id === id) { 
     return item; 
    } 
    } 
    return undefined; 
} 

export default <GetterTree<State, any>> { 
    getItemById 
}; 
+0

können Sie Geben Sie Ihren Geschäftscode dort ein, wo Sie ihn verwenden? – classicalConditioning

+0

@classicalConditioning Ich versuche es so zu verwenden: this. $ Store.getters.getItemById (2); aber ich sehe einen Fehler, der besagt, dass dies. $ store.getters.getItemById ist undefined –

+0

Wenn ich ID: Nummer aus der Funktion dann diese. $ store.getters.getItemById verrechnet korrekt, aber ich kann nichts übergeben weil es nicht denkt, dass es eine Funktion ist –

Antwort

1

basierend auf vuex docs Sie folgende implementieren können:

getters: { 
    // ... 
    getTodoById: (state, getters) => (id) => { 
    return state.todos.find(todo => todo.id === id) 
    } 
} 
store.getters.getTodoById(2) // -> { id: 2, text: '...', done: false } 

in Typoskript Sie könnte etwa so versuchen:

export default { 
    getItemById(state: State, getters: any) { 
    return (id: number) => { 
     return state.items.find(item => item.id === id); 
    } 
    } 
} 
+0

Danke, funktioniert super! –

Verwandte Themen