2014-09-23 2 views
0

Я действительно новичок в Knockout и у вас есть вопрос: Я пробую this пример с сайта officail.Knockout asp.net - не могу прочитать свойство undefined

Так что мой HTML файл:

<head> 
    <script src="Scripts/jquery-2.1.1.min.js"></script> 
    <script src="Scripts/knockout-3.2.0.js"></script> 
</head> 
<body> 
     <div data-bind='simpleGrid: gridViewModel'> </div> 

     <button data-bind='click: addItem'> 
      Add item 
     </button> 

     <button data-bind='click: sortByName'> 
      Sort by name 
     </button> 

     <button data-bind='click: jumpToFirstPage, enable: gridViewModel.currentPageIndex'> 
      Jump to first page 
     </button> 
    <script src="FuseJS.js"></script> 
</body> 
</html> 

и мой файл JS является:

/// <reference path="Scripts/jquery-2.1.1.min.js" /> 
/// <reference path="Scripts/knockout-3.2.0.js" /> 
var initialData = [ 
    { name: "Well-Travelled Kitten", sales: 352, price: 75.95 }, 
    { name: "Speedy Coyote", sales: 89, price: 190.00 }, 
]; 

var PagedGridModel = function (items) { 
    this.items = ko.observableArray(items); 

    this.addItem = function() { 
     this.items.push({ name: "New item", sales: 0, price: 100 }); 
    }; 

    this.sortByName = function() { 
     this.items.sort(function (a, b) { 
      return a.name < b.name ? -1 : 1; 
     }); 
    }; 

    this.jumpToFirstPage = function() { 
     this.gridViewModel.currentPageIndex(0); 
    }; 

    this.gridViewModel = new ko.simpleGrid.viewModel({ 
     data: this.items, 
     columns: [ 
      { headerText: "Item Name", rowText: "name" }, 
      { headerText: "Sales Count", rowText: "sales" }, 
      { headerText: "Price", rowText: function (item) { return "$" + item.price.toFixed(2) } } 
     ], 
     pageSize: 4 
    }); 
}; 

ko.applyBindings(new PagedGridModel(initialData)); 

Что мне не хватает? Я отлаживать код, который я видел эту ошибку «UncauchType ошибки: не могу прочитать свойство„ViewModel“неопределенный» TNX

+3

возможно дубликат [Требует ли simpleGrid дополнительных загрузок?] (Http://stackoverflow.com/questions/18507885/does-the-simplegrid-require-additional-downloads) – Nathan

+0

спасибо! это работает! – zvi

ответ

0

Вы не используете ko.applyBindings() в любом месте.

В идеале вам нужно сделать что-то подобное.

ko.applyBindings(new PagedGridModel(initialData)); 
+1

Я скопировал это 'ko.applyBindings (новый PagedGridModel (initialData)),' из последней строки его вопроса. – edhedges

+0

да, я пропустил это, спасибо за головы – QBM5

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