2013-12-19 2 views
-5

Таким образом, используя JS для создания 'продуктов'JS продукты не получает .Length

<script type="text/javascript" language="javascript"> 
        var products = [ 
        @{ 
      bool addComma = false; 
      foreach (UMACS.Bradmount.Models.QBProductRecord product in Model.AllProducts) 
      { 
       if (addComma) 
       { 
           <text> @Html.Raw(",") </text> 
       } 

          <text> @Html.Raw(string.Format("{{ value: \"{0} ({1})\", label: \"{0} ({1})\", desc: \"{1}\", prodid: \"{2}\" }}", product.ProductCode.Stripped(), product.ProductName.Stripped(), product.Id)) </text> 

       addComma = true; 
      } 
        } 
        ]; 

Так что продукты что-то вроде:

//      { 
//       value: "CARSLI5", 
//       label: "CARSLI5", 
//       desc: "Carrots Sliced 5kg", 
//       prodid: "43" 
//      }, 
//      { 
//       value: "CARBAT5", 
//       label: "CARBAT5", 
//       desc: "Carrots Baton 5kg", 
//       prodid: "24" 
//      } 
//     ]; 

Тогда позже я пытаюсь сказать

self.selectedProductId = ko.computed(function() { 
         for (var i = 0; i < products.length; i++) { 
          if (products[i].label == self.selectedProduct()) { 
           return products[i].prodid; 
          } 
         }  
         return "0"; 

где products.length говорит, что продуктов не существует? любые идеи относительно чего?

список
+0

Ваш список продуктов содержит Javascript и HTML? Кажется. , , псих. – Julio

+0

Если товары являются объектами, то они не имеют свойства длины. –

+0

Если продукты определены так, как вы говорите, это свойство длины (http://jsfiddle.net/sperske/Y6HUU/). Я думаю, что есть еще одна проблема с этой проблемой. –

ответ

1

JS должен выглядеть var list = [["a","b"],["c","d"],["e","f"]]; с [] не {}

list.length даст 3

Так на list[0].length дает 2

+0

OP окружает массив 'products' в квадратных скобках (' @ {} 'является тегом на стороне сервера, я предполагаю ASP) –

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