由於我不習慣於這種編程/數據管理方式,所以這很困難。knockout.js,breeze and dynatree/fancytree
我現在想要做的就是將通過微風返回的json對象傳遞給dynatree或fancytree。
存在網上的例子都假定樹將通過「initajax」做Ajax調用,或者需要一些古怪令人費解的自定義綁定處理成各種對象傳遞:
ko.bindingHandlers.dynatree = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
setTimeout(function() {
$(element).dynatree({
noLink: true, // noLink is required to 'unlock' the checkboxes
minExpandLevel: 2
})
// the timeout value shows the correct knockout bindings BEFORE dynatree kicks in.
}, 1000);
}
}
這一切似乎對我來說太複雜了,當然?我已經有了json對象,我知道這很有用。如果我使用knockout來「foreach」將它綁定到一些純html,那麼所有的數據都顯示得很好。在我看來,我所需要做的就是初始化樹div並將它傳遞給json對象......這只是我不知道該怎麼做!
我試過在這裏使用jsfiddle:http://jsfiddle.net/Ebram/UhA3m/5/,但是當自定義綁定處理程序觸發時,chrome開發人員工具會抱怨沒有「dynatree」方法的元素。它傳入一個「ul」元素,這可能是問題 - 它肯定應該傳遞到樹div,而不是ul元素?無論如何,如果任何人都可以指出我在正確的方向,我會非常感激。當我使用John Papa的SPA方法時,我還不確定我將在哪裏放置任何單獨的js初始化代碼,因爲底層viewmodel不適合我進行$(#tree).dynatree初始化打電話,是嗎?我必須承認我還沒有得到解決。
我想我正在尋找的東西是沿着「這個視圖的視圖模型完成加載和敲除綁定正在完成,初始化dynatree div並將此json對象傳遞給樹」if這在僞代碼中有意義嗎?
使用fancytree作爲在MVC框架連接的視圖是肯定一個有趣的用例。我沒有淘汰賽/微風的經驗,但讓我知道是否可以幫助改進樹API。例如applyPatch()方法就是在這個基礎上創建的。 (免責聲明:我是Dyna-/Fancytree的作者) – mar10
謝謝Martin。我見過嘗試把它掛了幾個人做一些有自定義綁定處理程序(http://jsfiddle.net/Ebram/UhA3m/5/)。你有沒有任何例子,dyna/fancytree是用JavaScript對象初始化的(不是json文件,內存中的對象數組)。我已經看到了一些重載已完成但未初始化的示例。有可能嗎?請注意,mvvm方法並不真正適用於直接使用javascripting,這就是爲什麼人們試圖使用我鏈接到的jsfiddle中顯示的自定義綁定處理程序方法。 – TheMook
tree.reload()接受一個'source'參數,它可以是一個子節點(或一個URL,...)的數組。另外'source'init選項接受這樣的數組。 – mar10