2012-11-15 83 views
0

我想爲John Papa的Code Camper項目添加一個新視圖。我卡在簡單的哈希導航綁定。我的問題是我如何找到填充{href:favorites}的代碼?它使用哈希標籤#/收藏夾填充,但我無法找到發生的地方。有超過30個JS文件,並搜索「收藏夾」產生太多的結果。我試圖在任何地方添加我的新視圖代碼,我發現「最愛」,但沒有運氣。我收到錯誤:識別綁定

消息:ReferenceError:newview未定義;綁定值:attr:{href:newview}

那麼,如何確定在下面的代碼中填充{href:favorites}?我知道knockout綁定是如何工作的,我只是找不到項目中的代碼。 John Papa的Code Camper項目和這個特定的代碼放在一邊,總的來說,有沒有任何工具可以告訴敲落js中綁定的位置?

<li class="route-top"><a data-bind="attr: {href: favorites}">Favorites</a></li> 

編輯:對於這種情況,我找到了綁定。我認爲它不起作用,因爲一個網頁卡在緩存中。不過,如果有一種工具或方法來確定哪些代碼綁定到屬性,我想知道它。

+0

這很棘手。簡短的答案是否定的:因爲MVVM被設計爲保持獨立於ViewModel的視圖,因爲綁定也適用於它綁定的任何對象。你被認爲*不*從視角來看有這些信息。但是,您可以編寫自己的綁定,將數據記錄到控制檯,就像調試綁定一樣,然後找出來。 – Tyrsius

回答

0

您所指的部分是視圖的導航鏈接。這些在shell中總是可見的,所以我將它們綁定到vm.shell.js。 shell viewmodel有一個menuHashes屬性,而這些屬性實際上是在配置文件中定義的(它們可以是數據庫驅動的)。

在更廣的範圍內,您可以通過查看binder.js模塊來確定哪些視圖綁定了CodeCamper中的哪些視圖模型。這是淘汰賽的綁定鏈接到HTML /視圖。

  ko.applyBindings(vm.shell, getView(ids.shellTop)); 
      ko.applyBindings(vm.favorites, getView(ids.favorites)); 
      ko.applyBindings(vm.session, getView(ids.session)); 
      ko.applyBindings(vm.sessions, getView(ids.sessions)); 
      ko.applyBindings(vm.speaker, getView(ids.speaker)); 
      ko.applyBindings(vm.speakers, getView(ids.speakers));