2012-06-29 6 views
0

Я изо всех сил, чтобы получить ручку на Метеор DEPS для того, чтобы быть конкретным мой случай использования:Метеор Deps - Запуск клиента со стороны Func

2) Когда коллекция меняется, я хочу, чтобы запустить JQuery функция на стороне клиента

Я думаю Deps то, что я ищу, но в данный момент я только использовал:

Template.templateName.set() -> 
return Set.find({}) 

... с точки зрения реакционной способности.

Решение, которое просто собирает коллекцию console.log каждый раз, когда оно будет изменено, будет более чем достаточно.

ответ

1

Это, безусловно, возможно сделать то, что вы хотите, используя контексты. Это немного сложнее, чем может быть [1], но вы можете делать то, что хотите, довольно легко, если будете следовать примеру deps из документов. Что-то вроде

var setup = function() { 
    var context = new Meteor.deps.Context(); 
    context.on_invalidate(function() { 
    setup(); 
    }); 
    context.run(function() { 
    Set.find({}); 
    console.log('changed');   
    }); 
} 
setup(); 

Или вы могли бы сделать помощник, который не возвращает ничего, чтобы воспользоваться из контекста, который будет получить настройки для вас:

Template.templateName.do_nothing -> 
    console.log 'changed' 
    Set.find({}) 
    null 

Хотя это заставит HTML для обновления, когда вы могли бы не хочу этого.

С другой стороны, вы можете просто хотеть Collection.observe.

[1] Если/когда они сливаются этот pull request, вы можете просто сделать что-то вроде:

Meteor.deps.await(function() { return Set.find(); }, function() { 
    console.log('changed'); 
}); 

Вы можете посмотреть на исходный код функции await может, если вы хотите немного больше понимания.

+0

Я не думал о шаблоне, который возвращает null. У меня есть работа, ура. Быстрое Q, хотя, контексты на самом деле правильный способ сделать что-то вроде этого? –

+1

Да, я считаю, что контексты - это именно то, что нужно. Использование «поддельного» помощника кажется мне взломанным. С плагином deps-extensions заметно проще использовать контексты, и мы надеемся, что мы сможем реагировать по всему миру. –

Смежные вопросы