2013-12-18 2 views
0

У меня есть сайт dojox.mobile, который имеет общий вид. Я хотел бы повторно использовать представление для нескольких «кнопок» и вызвать функцию, которая изменяет метку заголовка представления в зависимости от того, какая кнопка была нажата. Однако, когда я меняю innerHTML, кнопка назад исчезает. Когда я использую функцию setattr, метка не изменяется. Каков правильный способ справиться с этим?Изменение атрибута метки Dojox.Mobile.Heading

</ссылка> -> Demo Эта проблема

<div id="MainMenu" data-dojo-type="dojox.mobile.View" data-dojo-props="selected: true" style="width: 100%; height: 100%;"> 
     <h1 data-dojo-type="dojox.mobile.Heading">View A</h1> 

     <h2 dojoType="dojox.mobile.RoundRectCategory">Select a View</h2> 
     <ul data-dojo-type="dojox.mobile.RoundRectList"> 
      <li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="rightText:'Go!', moveTo: 'generic_view_x', callback:SetupViewA"> 
       View A 
      </li> 
      <li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="rightText:'Go!', moveTo: 'generic_view_x', callback:SetupViewB"> 
       View B 
      </li> 
     </ul> 
    </div> 

    <div id="generic_view_x" data-dojo-type="dojox.mobile.View" style="width: 100%; height: 100%;"> 
     <h1 id="view_x_header" data-dojo-type="dojox.mobile.Heading" data-dojo-props="back:'Main', moveTo:'MainMenu',label:'test'"></h1> 

      <div id="map_canvas" style="width: 100%; height: 100%;"> 
       Some Other Stuff Here 
      </div> 


    </div> 



    <!-- configure and load dojo --> 
    <script src="./dojo/dojo.js" data-dojo-config="async:1, mblAlwaysHideAddressBar:true"></script> 

    <script> 

     require(["dojo"], function(dojo){ 

     SetupViewA = function(){ 
      // Doing it This way removes the back button 
      // document.getElementById('view_x_header').innerHTML = 'View A'; 
      // This doesn't change anything 
      dojo.setAttr("view_x_header", 'label','View A') 

     } 
     SetupViewB = function(){ 

       document.getElementById('view_x_header').innerHTML = 'View B'; 

     } 


       }) 

     require(["dojox/mobile/parser", "dojox/mobile", "dojox/mobile/deviceTheme", "dojox/mobile/compat", "dojo/domReady!"], 
       function(parser) { 
       parser.parse(); 
       }); 


    </script> 

</body> 

ответ

1

С виджетами, как заголовок, его лучше использовать его получить/установить для изменения атрибуты виджета.

вы должны использовать:

dijit.registry.byId("view_x_header").set("label", "View B"); 

скрипку :: http://jsfiddle.net/theinnkeeper/Wgx8u/

+0

Отлично. Спасибо, что исправляет это. Раньше я старался не делать этого. Думаю, я имел в виду предыдущий API-интерфейс dojo? – user2855135

+0

yes dijit.byId - до 1.7. они перенесли поиск виджета в свой собственный пакет, называемый реестром – tik27

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