2014-02-21 32 views
1

更新:KnockOut KoGrid:如何在koGrid中進行行雙擊和鏈接?

請檢查並就如何有一個列值作爲koGrid環節,也是我怎麼可以在kogrid雙擊功能的同時即年齡列作爲鏈接​​點擊它時,需要我首頁/關於頁面,當我雙擊任何一行時,它會將我帶到主頁/索引頁面。

[這裏]:http://jsfiddle.net/LRY2U/

{ 
field: "age", 
displayName: "Age", 
cellTemplate: "content" 
} 

感謝 普里

+0

你可以展示一些代碼,或者更好的仍然是一個工作JSfiddle的問題 – Tanner

+0

看看你的問題歷史,你已經問了9,有19個答案,只有標記爲1被接受。沒有答案有用嗎?我建議你標記最能幫助你的答案,首先讓所有有同樣問題的人都能看到固定/幫助你的問題,其次是給那些花時間幫助你的人留下一些功勞。如果沒有答案可以幫助解決問題,您可以用最終解決方案回答自己的問題,並將自己的答案標記爲正確。 – Tanner

+0

謝謝製革商。我將標記爲接受爲我工作的答案。我會發布代碼供您參考。 –

回答

1

的問題是,該行選擇處理鼠標的點擊,所以我們要確保我們不允許點擊事件傳播到行選擇處理程序,我們可以使用方法event.stopPropagation執行此操作。

爲了得到這個工作,我首先更改了ItemViewModel構造函數來執行實際的導航。

function ItemViewModel(name, age) { 
    var self = this; 

    self.name = name; 
    self.age = age; 
    self.ageUrl = "/Home/Index/" + self.age; 
    function navigateTo(url){ 
     // Before navigation we want to stop propagation of the event to avoid 
     // other handlers to handle the click and replace the url (this will 
     // ensure the row selection isn't triggered by clicking the age link) 
     event.stopPropagation(); 
     window.location.href = url; 
    } 
    self.navigateToName = function(){ 
     navigateTo("/Home/Index?Name=" + self.name); 
    }; 
    self.navigateToAge = function(){ 
     navigateTo(self.ageUrl); 
    }; 
}; 

然後我更新了您的模板到ItemViewModel對象使用的屬性和方法。

cellTemplate: "<a data-bind='click: $parent.entity.navigateToAge, attr: {href: $parent.entity.ageUrl}, text: $parent.entity.age'></a>" 

最後還更新了行選擇處理程序使用ItemViewModel對象的方法。

afterSelectionChange: function (rowItem, event) { 
    if (event.type == 'click') { 
     rowItem.entity.navigateToName(); 
    } 
} 

做這些改變了我的一切運作良好(如果我把它放在一個自定義的HTML頁面,因爲的jsfiddle是不是導航非常熱衷)之後。