IBM Worklight 6.1 - Невозможно иметь рабочий переход представления Dojo
Я новичок в работе с рабочей средой и начал работать над этим недавно.
Я использую Dojo версии 1.9 (поставляемая IBM), Worklight 6.1, ОС Windows 7, Eclipse Juno SR2 64bit, IE 10 (для RPE), Google Chrome последний (как браузер по умолчанию).
Я перепробовал много виджетов в Dojo Mobile, и все они работают нормально, я тоже сталкивался с другими вопросами, такими как "Worklight 6.1 Android Applicaiton, отображает все виды без виджетов", выполнил все шаги, указанные в решении, успешно создал и просмотрел страницы как на MBS, так и на эмуляторе Android. Единственная проблема, когда я работаю с представлениями. Я добавляю tabBar из dojo и TabBarButtons для просмотра переходов. Также добавьте несколько просмотров на страницах и свяжите их с помощью кнопок. Я также проверяю и вижу, что мой файл main.js обновлен всеми включенными элементами. Хотя панель инструментов вместе с представлением по умолчанию является видимой, она не переключает вид, когда я нажимаю на другие кнопки в панели вкладок. также при нажатии TabBarButtons всплывающее окно с ошибкой в консоли Chrome - Uncaught TypeError: undefined не является функцией
Эта ошибка выскакивает при каждом клике.
Вот структура моего исходного кода в теге body файла index.html:
<body style="display: none;">
<div data-dojo-type="dojox.mobile.View" id="view2"
data-dojo-props="selected:true">
<div data-dojo-type="dojox.mobile.View" id="view0" data-dojo-props="selected:true" >
<div data-dojo-type="dojox.mobile.Heading"
data-dojo-props="label:'Hello world'"></div>
<button data-dojo-type="dojox.mobile.Button">Hello</button>
<input data-dojo-type="dojox.mobile.TextBox"><input type="range"
data-dojo-type="dojox.mobile.Slider"
data-dojo-props="orientation:'H'">
</div>
<div data-dojo-type="dojox.mobile.View" id="view1"
data-dojo-props="selected:false">
<div data-dojo-type="dojox.mobile.Heading"
data-dojo-props="label:'About',moveTo:'view0'">
</div>
<div data-dojo-type="dojox.mobile.RoundRect">
Hello, we are a leading company in innovations
</div>
</div>
<ul data-dojo-type="dojox.mobile.TabBar" fixed="bottom" id="Tab1">
<li data-dojo-type="dojox.mobile.TabBarButton" data-dojo-props="moveTo:view0,transition:'slide'" id="tabB1">Home</li>
<li data-dojo-type="dojox.mobile.TabBarButton" data-dojo-props="moveTo:view1,transition:'slide'" id="tabB2">About</li>
</ul>
</div>
<script src="js/initOptions.js"></script>
<script src="js/main.js"></script>
<script src="js/messages.js"></script>
</body>
// Все остальное - код по умолчанию, никаких изменений в версии jquery или чем-либо еще. Я также попробовал следующие вещи, и ни одна из них, похоже, не работает:- Скопировал и заменил файлы в папке www из dojoLib/dojo/dojo/nls/core-web-layer.js и mobile-web-layer.js файлы. -Сохранить панель вкладок из любого представления непосредственно в теге body и связанных представлениях к нему. -Добавлен атрибут id к элементам tabBar и tab, а также к элементам просмотра. -отключил предоставление отсутствующих ресурсов библиотеки и включил отсутствующие файлы (если таковые имеются), перестроил проект и снова запустил.
1 ответ
Основной проблемой (вызывающей исключение) являются пропущенные кавычки вокруг идентификаторов представления атрибутов moveto. Так должно быть:
data-dojo-props="moveTo:'view0',
После исправления ваш образец будет работать.
Но есть и другая проблема, на этот раз дизайнерская: TabBar fixed
свойство имеет смысл только при использовании с ScrollableView (это свойство гарантирует, что панель вкладок не прокручивается и сохраняет свое нижнее положение). Поэтому ваш внешний вид должен быть ScrollableView. Также обратите внимание, что вложенные представления имеют некоторые ограничения. В частности, используя атрибут "moveto", вы не можете перейти из представления в другое представление, если последнее содержится в другом родительском элементе.
Не стесняйтесь смотреть на различные тесты в dojox/mobile/tests и на документацию