2012-10-20 81 views
1

我很難重置/刷新/重新加載基於Knockout模型的同位素視圖。我已經延長了一個小提琴去除和替換物品,但它的不可靠性和打破排序。重置同位素和挖空佈局

self.reset = function() { 
     // Remove all services 
     $.each(self.services(), function (index, value) { 
      var serviceToDelete = self.services()[0] 
      self.removeService(serviceToDelete); 
     }) 

     // Add some back 
     self.services.push(new Service('some service', 'and this is a description', 7, '01/01/2000')); 
     self.services.push(new Service('another service', 'just another description', 2, '02/01/2000')); 
     self.services.push(new Service('driving school', 'learn to drive', 4, '10/01/2000')); 
     self.services.push(new Service('ice cream sunday', 'sweet cold and delicious', 3, '01/01/2002')); 
     self.services.push(new Service('tootie fruity', 'a rootie', 6, '01/01/2003')); 
     self.services.push(new Service('hand gliding', 'you can see your house from here', 5, '01/01/2012')); 
     self.services.push(new Service('turkey dinner', 'is not just for thanksgiving', 1, '01/01/2011'));     
    } 

我已經擴展了以下的jsfiddle與「復位」按鈕,簡單地移除從observableArray所有項目和readds逐一。

http://jsfiddle.net/8uxKF/2/

  1. 它完全失敗的IE10。小提琴「運行」窗格甚至沒有加載。

  2. 這部分工作在Chrome,但重置控制檯錯誤後輸出每當一種啓動:

    遺漏的類型錯誤:對象#有沒有方法「sortBy」

  3. 在FF它與與chrome類似的錯誤。 (但在我的應用程序無法排序)

任何人都可以幫忙嗎?重置後我需要排序才能工作。我不確定這是否是「最佳」重置方式,因爲它似乎是造成問題的原因。

回答

0

我查看代碼,並以其優良的,除了在sortByID一個錯誤,我已經糾正了。

令人沮喪且令人尷尬的是,似乎jsFiddle在從GitHub提供服務時阻止了由於mimetype不匹配而導致的其中一個資源。只是要清楚這是在jsFiddle中從GitHub運行外部腳本的問題。

最終代碼發佈到jsfiddle.net/8uxKF/3以供參考。

0

self沒有名爲sortBy()的功能/屬性(也不會有sortDir())。您的serviceAdded「事件」嘗試調用這些不可靠屬性,因此失敗。

我不清楚你到底應該做什麼,你的代碼遍佈整個地方。也許你應該將這些觀察值添加到你的視圖模型中?

function ViewModel() { 
    var self = this; 
    // ... 
    self.sortBy = ko.observable('name'); 
    self.sortDir = ko.observable('ascending'); 
}