2017-03-10 12 views
0

新しいカルーセルアイテムを動的に追加しようとしています(Onsen UI 2)が動作しています。私が使用しています のコードでは、私は新しいカルーセル項目を追加するために使用していたコードは以下の通りですonsen UI 2のjavascriptで新しいカルーセルアイテムを動的に追加

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <link rel="stylesheet" href="node_modules/onsenui/css/onsenui.css"/> 
     <link rel="stylesheet" href="node_modules/onsenui/css/onsen-css-components.css"/> 
     <script src="node_modules/onsenui/js/onsenui.js"></script> 
     <script src="jquery.js"></script> 
    </head> 

    <body> 
     <ons-splitter> 
      <ons-splitter-side id="menu" side="left" width="220px" collapse swipeable> 
       <ons-page> 
        <ons-list> 
         <ons-list-item onclick="fn.load('home.html')" tappable> 
          Home 
         </ons-list-item> 
        </ons-list> 
       </ons-page> 
      </ons-splitter-side> 
      <ons-splitter-content id="content" page="home.html"></ons-splitter-content> 
      <ons-navigator id="myNavigator" page="home.html"></ons-navigator> 
     </ons-splitter> 

     <ons-template id="home.html"> 
      <ons-page id="home"> 
       <ons-toolbar> 
        <div class="left"> 
         <ons-toolbar-button onclick="fn.open()"> 
          <ons-icon icon="ion-navicon, material:md-menu" size="32px, material:24px"></ons-icon> 
         </ons-toolbar-button> 
        </div> 
        <div class="center top-bar-title"></div> 
        <div class="right">     
         <ons-toolbar-button id="addInCarousel"> 
          <ons-icon icon="ion-ios-plus, material:md-plus" size="32px, material:24px"></ons-icon> 
         </ons-toolbar-button> 
        </div> 
       </ons-toolbar> 

       <ons-carousel auto-refresh fullscreen swipeable auto-scroll overscrollable id="itemsCarousel" direction="horizontal"> 
        <ons-carousel-item> 
         <img src="images/01.jpg" style="width: 100%; height: auto;"/>     
        </ons-carousel-item>     
        <ons-carousel-item id="caro2"> 
         <img src="images/02.jpg" style="width: 100%; height: auto;"/> 
        </ons-carousel-item>     
       </ons-carousel> 
      </ons-page> 
     </ons-template> 

     <script> 
      window.fn = {}; 
      window.fn.open = function() { 
       var menu = document.getElementById('menu'); 
       menu.open(); 
      }; 

      window.fn.load = function(page) { 
       var content = document.getElementById('content'); 
       var menu = document.getElementById('menu'); 
       // content.load(page).then(menu.close.bind(menu)); 
       document.querySelector('#myNavigator').pushPage(page); 
       menu.close(); 
      }; 

      ons.ready(function() { 
       var carousel = document.addEventListener('postchange', function(event) { 
        console.log('Changed to ' + event.activeIndex); 
       });  
      }); 

      document.addEventListener("init",function(event) { 
       var page = event.target; 

       if(page.matches('#home')) { 
        // set page header title 
        page.querySelector('ons-toolbar .center').innerHTML = 'Testing App'; 

        // clicking on header add button for adding new carousel item 
        page.querySelector('#addInCarousel').onclick = function() { 
         console.log("In function"); 
         var onsItem= document.createElement('ons-carousel-item');      
         onsItem.innerHTML = '<img src="images/020.jpg" style="width: 100%; height: auto;"/>';    
         document.getElementById('itemsCarousel').appendChild(onsItem); 
        };   
       } 
      }, false); 
     </script> 
    </body> 
</html> 

以下の通りです:私が間違っているのどこ

// clicking on header add button for adding new carousel item 
        page.querySelector('#addInCarousel').onclick = function() { 
         console.log("In function"); 
         var onsItem= document.createElement('ons-carousel-item');      
         onsItem.innerHTML = '<img src="images/020.jpg" style="width: 100%; height: auto;"/>';    
         document.getElementById('itemsCarousel').appendChild(onsItem); 
        }; 

案内してください。すべてのコードサンプルまたはWebリンクが評価されます。

+0

が、私はこれは、<アドオン・スプリッタ・コンテンツID =「コンテンツ」ページ=「home.html」>は両方ともhome.htmlとホームページを指しているので動作しません。これは機能していません。 – Vivek

+0

アプリでスプリッターとナビゲーターを使用するにはどうすればいいですか? – Vivek

答えて

1

<ons-splitter-content>の内側に置き、pageの属性を<ons-splitter-content>にして削除できます。

<ons-splitter-content id="content"> 
    <ons-navigator id="myNavigator" page="home.html"></ons-navigator>  
</ons-splitter-content> 

これは2 home.htmlページの初期化を解決します。

page.querySelector("#id")メソッドで関数内のdocument.getElementById("id")メソッドを切り替える必要があります。これは、後で現在のページのidを検索するためです。

したがって、あなたの関数は次のようになります。

page.querySelector('#addInCarousel').onclick = function() { 
    console.log("In function"); 
    var onsItem= document.createElement('ons-carousel-item');      
    onsItem.innerHTML = '<img src="images/020.jpg" style="width: 100%; height: auto;"/>';    
    page.querySelector('#itemsCarousel').appendChild(onsItem); 
}; 
+0

これは、同じページでスプリッターとナビゲーターを使用する方法の答えです。 – Vivek

関連する問題