2016-03-21 3 views
1

В этом приложении Meteor есть кнопка, которая при нажатии вызывает вызов определенной функции. Существует также ActiveTaskCollection для хранения поля activeTask, который изменяется во время работы приложения., вызывающий функцию полиморфно

Я пытаюсь создать механизм для запуска правильной функции, основанной на значении activeTask, без необходимости писать длинный условный оператор для каждого значения, которое он мог бы удерживать.
Но только активируйте функцию при событии нажатия кнопки и не реагируйте, когда изменяется активная таща.

Вот мой мозг «дамп», как это можно реализовать? Благодаря

function a(){console.log{'a'}} 
function b(){console.log{'b'}} 

activeTask: 'a' 
function.call(Col.findOne({last document}).activeTask); // invokes function a 
activeTask: 'b' 
function.call(Col.findOne({last document}).activeTask); // invokes function b 
+0

Какие существуют условия для выбора правильной функции? –

+0

@MikeC Значение, сохраненное в поле activeTask объекта ActiveTaskCollection, является единственным условием. помните, что я хочу избежать, если или переключить блоки, где нужно написать длинное условное заявление. :) –

+0

Что такое 'activeTask'? Это строка, объект, число, все вышеперечисленное? –

ответ

4

Как о чем-то в этом направлении: магазин функций внутри объекта

fCollection = {} 
fCollection.a = function(){console.log('a')} 
fCollection.b = function(){console.log('b')} 

извлечения функция

fn = fCollection[getActiveTask()] 

выполнить функцию

fn() 

или за один раз

fCollection[getActiveTask()]() 
Смежные вопросы