2015-04-27 4 views
2

Итак, я использую Q.js, чтобы помочь пользователям уведомлять о потенциально длительном вычислении, выполняющемся асинхронно (используя setTimeout с нулевой задержкой для многократного вызова функции набором количество раз).Q.js - как получить доступ к кешированному элементу

Однако, это не работает:

var status = d3.select('#status'); 

var t = transfer({ 
    N: 100 
}); 

t.then(function (values) { 

    status.text(''); 
    column_chart(values); 

}, function (error) { 

    status.text('There was an error calculating the transfer probabilities') 

}, function (progress) { 

    status.text('Calculating ' + Math.round(progress) + '%'); 

}); 

По какой-то причине элемент статус не определен внутри решимости, отвергаем и функции прогресса. Однако, если я заменяю каждый status.text на d3.select('#status').text, тогда все работает отлично. Я немного смущен, почему я не могу использовать кешированный элемент?

ответ

1

ОК, возникла проблема с именем моего кэшированного элемента!

var status = d3.select('#status'); 

меняет свое название исправили проблему

var statusEl = d3.select('#status'); 

Оказывается, в свое обещание функции статус был необработанный HTML элемент, который, конечно, не имел никакого текста метода. Это то странное, что все элементы DOM с идентификаторами добавляются в глобальный объект окна ...

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