2014-02-23 18 views
0

全部。 我正試圖動態創建一個表。所以在tbody標籤裏面我有這個代碼可能會產生所有的行。Foreach:剃刀用Javascript方法在tbody裏面

 <tbody id="body"> 
      @foreach (FoodkitGestores.Entidades.MenuCantidad m in Model.p.listaMenu) 
      { 

       <script type="text/javascript"> 
        var idMenu = Number(@m.idMenu); 
        var nombre = $("#menu-"+idMenu).find(".item").text(); 
        var precio = parseFloat($("#menu-"+idMenu).find(".item").attr("data-precio")); 
        var cantidad = Number(@m.cantidad); 
        var cantidadEntregada = Number(@m.cantidadEntregada);  

        AgregarMenu(idMenu, nombre, precio, cantidad, cantidadEntregada);    
       </script> 

      } 
     </tbody> 

所以,事情是,它沒有找到函數「AgregarMenu」。說它沒有被定義。但它是,我測試了它,它正在工作。

我嘗試通過添加標籤,但它不支持tbody中的HTML5,也不起作用。它只是字面上寫「AgregarMenu(idMenu,nombre,precio,cantidad,cantidadEntregada);」

任何線索? 非常感謝!

編輯: AgregarMenu是一個Javascript方法,它是在已經引用的.js文件中。

回答

1

假設AgregarMenu是一個JavaScript方法,您需要確保您定義該方法的腳本已加載之前您調用該方法的部分。

如果您在外部JavaScript文件中定義了此功能,請確保您包含該代碼的以上。可能位於您的視圖頂部。

儘管這可能會解決您當前的問題,但我建議您執行某種模板邏輯,而不是在循環內多次調用AggregarMenu mehtod。 Tim的答案是一個很好的選擇,或者你可以研究一些其他的模板解決方案。

+0

你是對的!非常感謝! – rolo1091

1

我會建議裝飾具有數據屬性的項目並構建一個可以迭代項目的單個腳本,從數據屬性中提取值並應用該函數會更好。實際上,通過在函數定義之外重複使用具有不同值的相同代碼,可以重複拋棄全局名稱空間的變量定義。如果你這樣做,並確保該方法在DOM加載後運行,只要該函數在頁面上它應該都工作,並且是一個更清潔的實現。

<table> 
<tbody> 
@foreach (FoodkitGestores.Entidades.MenuCantidad m in Model.p.listaMenu) 
{ 
    <tr id="[email protected]" 
     class="menu" 
     data-id="@m.idMenu" 
     data-cantidad="@m.cantidad" 
     data-cantidadEntregada="@m.cantidadEntregada"> 
     <td class="item" data-precio="35.15">35.15</td> 
    </tr> 
} 
</tbody> 
</table> 

<script type="text/javascript"> 
    $(function() { 
     $('.menu').each(function() { 
      var $this = $(this), 
       nombre = Number($this.data('id')), 
       parseFloat($this.find(".item").data("precio")), 
       cantidad = Number($this.data('cantidad')); 
       cantidadEntregada = Number($this.data('cantidadEntregada');  
      AgregarMenu(idMenu, nombre, precio, cantidad, cantidadEntregada); 
     }); 
    }); 
</script> 
+0

建議接受!非常感謝,我會執行此操作 – rolo1091