как получить доступ через JS к Dojo DataGrid, объявленному в HTML? - PullRequest
2 голосов
/ 28 декабря 2011

В моем HTML определена сетка данных Dojo:

<table data-dojo-type="dojox.grid.DataGrid" data-dojo-id="mainTable">
  <thead>
    <tr>
      <th field="id" width="128px">id</th>
      <th field="foo" width="128px">foo</th>
      <th field="bar" width="128px">bar</th>
      <th field="baz" width="128px">baz</th>
    </tr>
  </thead>
</table>

и у меня есть функция JavaScript, которая пытается получить дескриптор этой DataGrid и назначить ей модель:

[...]

mainTable.setStore(new dojo.data.ItemFileWriteStore({ data : data }));

[...]

Согласно Dojo docs , добавление тега data-dojo-id генерирует «переменную JavaScript, которая будет создана для хранения объекта сетки. На нее можно ссылаться в скриптах». Но моя консоль Chromium JS жалуется, что «mainTable» не определена ». Итак, когда создается эта переменная и что мне нужно сделать, чтобы получить к ней доступ?

Ответы [ 2 ]

0 голосов
/ 23 мая 2012

data-dojo-id используется для объявления магазина, а не виджета. Затем создается глобальная переменная с именем, указанным в data-dojo-id, на которую вы можете ссылаться из javascript.

0 голосов
/ 28 декабря 2011

Значение id, которое вы устанавливаете в разметке declaritave, является идентификатором domNode в объекте документа.Затем JavaScript, который вы пытаетесь запустить, ищет глобальную переменную с таким именем, которая совсем не совпадает с именем узла в DOM.

Есть два способа сделать это.Один из них - объявить jsId="something" как часть вашей декларативной разметки.Это заставит dijit создать ссылку на экземпляр виджета как глобальную переменную с именем something.Это может совпадать с именем вашего узла DOM, поскольку они находятся в разных пространствах имен (объект документа против глобального пространства имен javascript).

Другой способ сделать это - использовать функцию поиска в вашем javascript для поискаобъект javascript через его идентификатор узла DOM, например:

var mainTable = dijit.byId("mainTable");
mainTable.setStore(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...