Knockout периодически связывает элемент с [object HTMLDivElement] - PullRequest
0 голосов
/ 05 декабря 2018


Я использую requireJs + knockout js в своем приложении пользовательского интерфейса.
У меня есть элемент div в моем основном html-файле (index.html), например:

<html style="height:100%" lang="en">
  <head>
     <title>Main</title>
     <script data-main="myMain" src="/path/js/libs/require/require.js" type="text/javascript"></script>
  </head>
  <body  style="background-color:#EDEDED">
        <div class="someClass" id="loading" data-bind="text:loading"></div>
  </body>
</html>

Я связываю его с текстом «Загрузка» в моем файле myMain.js с помощью:

ko.applyBindings({loading: getTranslatedStringFromLib('LOADING')}, $('#loading')[0]);

Хотя это работает нормально в 9 из 10 случаев, иногда нокаут вводит div с [object HTMLDivElement], делая сгенерированный код похожим на:

<div data-bind="text:loading" class="someClass" id="loading">[object HTMLDivElement]</div>

Кто-нибудь видел что-то подобное раньше??Любая помощь с тем, что происходит?

1 Ответ

0 голосов
/ 05 декабря 2018

Это возможно потому, что у вас есть элемент с идентификатором loading, и когда (по какой-то причине) модель представления недоступна (или изменяется), она разрешает маркер loading как window.loading, что ссылки ваш #loading элемент.

См. Fiddle (например)

...