【问题标题】:Identify Binding识别绑定
【发布时间】:2012-11-18 09:30:25
【问题描述】:

我正在尝试向 John Papa 的 Code Camper 项目添加一个新视图。我被困在简单的哈希导航绑定上。我的问题是如何找到填充 {href: favorites} 的代码?它使用井号标签 #/favorites 填充,但我找不到发生这种情况的位置。有超过 30 个 JS 文件,搜索“收藏夹”会产生太多结果。我已经尝试在我发现“收藏夹”的任何地方添加我的 newview 代码,但没有运气。我得到了错误:

消息:ReferenceError:未定义新视图;绑定值:attr: {href: newview}

那么,我如何确定下面代码中的 {href: favorites} 填充了什么?我确实知道淘汰赛绑定是如何工作的,只是在项目中找不到代码。除了 John Papa 的 Code Camper 项目和这个特定的代码之外,一般来说,有没有什么工具可以知道绑定在淘汰赛 js 中的位置?

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

编辑:对于这种情况,我找到了绑定。我认为它不起作用,因为网页卡在缓存中。不过,如果有工具或方法可以识别哪些代码绑定到我想知道的属性。

【问题讨论】:

  • 这很棘手。简短的回答是否定的:因为 MVVM 旨在保持视图独立于 ViewModel,因为绑定也将应用于它绑定的任何对象。从视图的角度来看,您应该拥有这些信息。但是,您可以编写自己的绑定,将数据记录到控制台,例如调试绑定,然后通过这种方式进行查找。

标签: knockout.js singlepage single-page-application


【解决方案1】:

您所指的部分是视图的导航链接。这些在 shell 中总是可见的,所以我将它们绑定到 vm.shell.js。 shell viewmodel 有一个 menuHashes 属性,这些属性实际上是在配置文件中定义的(它们可能是数据库驱动的)。

在更广泛的范围内,您可以通过查看 binder.js 模块来判断哪些视图绑定到 CodeCamper 中的哪些视图模型。这是敲除绑定链接到 html/views 的地方。

            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));

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2015-11-06
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多