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 и на документацию

Другие вопросы по тегам