2016-09-15 16 views
0

下面是Ojet組件,我想將OJet組件中的'p_id'傳遞給Menu中的'contextMenuItemSelect'功能。 ()能夠獲取所選的選項,但我想獲取相應列表項的p_id,並根據所選的選項導航到編輯或查看。我有一個列表(ojListView),其中有一個上下文菜單(ojMenu)。如何將列表中的變量傳遞給菜單選擇功能?

這怎麼辦?

Ojet組件

 <script type="text/html" id="server_template"> 
      <li data-bind="attr: {id: $data['p_id']}"> 
       <div class="oj-flex"> 

        <div class="oj-lg-12 oj-md-12 oj-sm-12"> 
         <div class="oj-flex row portfolio-list"> 
          <!-- Portfolio Name and Description --> 
          <div class="oj-lg-4 oj-sm-12"> 
           <h2> 
            <a href="#" data-bind="text: p_id, click: getView"></a> 
           </h2> 

           <span class="data"><span data-bind="text: desc"></span></span> 

          </div> 

           <div id="menubutton-container"> 
            <button id="menuButton2" 
             data-bind=" 

             ojComponent: {component: 'ojButton', display: 'icons', 
             icons: {start:'demo-icon-font demo-gear-icon-16'}, 
             label: 'Button with two icons and no text', 
             menu: '#myMenu2'}"> 
            </button> 

           // The below span gives the list ID correctly 

           <span data-bind="text: p_id"></span> 

            <ul id="myMenu2" data-bind="attr:{title: p_id},ojComponent: {component: 'ojMenu', select:contextMenuItemSelect}" style="display:none"> 

           // The below span always gives the 1st id on the list 

            <span data-bind="text: p_id"></span> 
            <!-- ko template: {name: 'menuItemTemplate', foreach: items, as: 'item'} --> 
            <!-- /ko --> 
            </ul> 
           </div> 

         </div> 


        </div> 
       </div> 
      </li> 
     </script> 

菜單模板

<script type="text/html" id="menuItemTemplate"> 
    <li data-bind="css: {'oj-disabled': item.disabled}"> 
    <a href="#" data-bind="text: name"></a> 
    <!-- ko if: item.items --> 
    <ul data-bind="template: {name: 'menuItemTemplate', foreach: item.items, as: 'item'}"> 
    </ul> 
<!-- /ko --> 
</li> 

JS功能

self.contextMenuItemSelect = function(event, ui) { 

     console.log(ui.item); 
     var option = ui.item.children("a").text(); 
    } 

回答

0

這將有助於有一個工作的代碼來嘗試它,而不是這些剪斷的寵物,但我想先嚐試的是確保UL元素(具有ojMenu綁定)具有唯一的ID屬性。從示例代碼看起來,所有菜單都共享相同的ID「myMenu2」。我不知道ojMenu是如何工作的,但是它應該通過ID來查找元素,這可能會導致麻煩(而且,當有重複ID時,它不是有效的HTML代碼)

相關問題