如何在durandal / knockout中的自定义绑定中访问父视图或根视图模型

穆克

这是一个澄清实现此目的的最佳方法(或任何方法!)的问题。这可能是我尝试将自己的.net编码经验应用于这种新的工作方式的方式,但是我不敢相信对于许多编码人员来说,这不是一个现实问题。

所以。主视图/视图模型会在页面上使用许多子视图,因为某些部分会根据用户的选择/操作进行更改。这些子视图组成母版页:

<div data-bind="compose: { model: articleSection, preserveContext: true }"></div>

...在子视图中,我能够引用控制主视图的根可观察对象,如下所示:

<a href="#" class="btn" data-bind="css: { 'btn btn-default': true, 'btn-primary': $root.inEditMode() }, click: $root.setEditMode, enable: $root.articleSelected()">Edit</a>

但是,其中一个子视图本身具有一个子子视图,该子子视图使用自定义绑定和用于构建的模板,因为它是树形视图,并且需要能够递归构造布局。

子视图代码如下:

<div id="fancytree" data-bind="groupTree: treeGroups">
    <!--<ul data-bind="template: { name: 'itemTmpl', foreach: treeGroups }, groupTree: {}"></ul>/-->
</div>

模板是:

    <script id="itemTmpl" type="text/html">
      <!-- Template used in labtool for tree-->
        <li>
            <span>
                <span data-bind="text: name" />
            </span>
            <ul data-bind="template: { name: 'itemTmpl', foreach: children }"></ul>
        </li>
    </script>  

定制绑定是:

ko.bindingHandlers.groupTree = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var tm = valueAccessor();
        var tmUnwrapped = tm();
        $(element).fancytree({
            minExpandLevel: 1,
            source: tmUnwrapped,
            lazyload: function (e, data) {
                data.result = datacontext.getGroupChildren('1111');
            },
            activate: function (event, data) {
                var node = data.node;
                var tg = rootVm.selectedGroupId();
                alert(node.title);
            },
        })
    }

所以我的问题是,我无法从.net的日子中得到我认为的“全局变量”,这在我称为“ selectedArticle”的顶级根视图模型中是可以观察到的。当用户单击树视图节点时,将激活“激活”功能,并使用正确的详细信息弹出警报,而我只是希望能够将该值放入我的根视图模型中的可观察值中,实际上是两个从自定义绑定处理程序的绑定上下文升级。

这一定是别人做的吗?我一直用谷歌搜索,直到脸色发青,但显然我缺少我需要的关键词或概念。在自定义绑定“激活”功能的伪代码中,我只希望能够输入“ root.selectedArticle = node.title”之类的内容,但是显然root不能以这种方式使用,所以这就是我无法解决的地方!

伊利亚

您可以从绑定上下文(函数的第五个参数init/update访问它

init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) 
 {  
    bindingContext.$data          // current data
    bindingContext.$parent        // parent binding  
    bindingContext.$parents[0]    // same to bindingContext.$parent  
    bindingContext.$parents[1]    // parent of parent  
    bindingContext.$parentContext // same with bindingContext but from parent
    bindingContext.$root          // you root View Model  
 // ...  
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Durandal中禁用缓存视图

来自分类Dev

如何将视图模型中的功能绑定到swiftui中的自定义视图?

来自分类Dev

如何在durandal中组织App?

来自分类Dev

如何在 Knockout 中的自定义 bindingHandler 中绑定到自定义模板

来自分类Dev

如何在Xamarin表单中创建自定义可绑定视图?

来自分类Dev

如何在视图集使用的 Django 模型中添加列的自定义行级处理

来自分类Dev

如何在自定义视图类中动态替换自定义子视图?

来自分类Dev

如何在MVC中绑定自定义模型类

来自分类Dev

如何在Durandal中检测“后退”按钮单击

来自分类Dev

如何在Durandal 2中避免全局变量

来自分类Dev

如何在Durandal的路线变更中调用全局函数?

来自分类Dev

如何在Durandal View中运行脚本

来自分类Dev

如何在Android中过滤自定义列表视图

来自分类Dev

如何在Android中实现自定义堆栈视图?

来自分类Dev

如何在新的NavigationView中添加自定义视图

来自分类Dev

如何在Python中创建自定义分组视图?

来自分类Dev

如何在片段中实现自定义视图

来自分类Dev

如何在presentTextInputControllerWithSuggestions中自定义听写视图

来自分类Dev

如何在android中创建自定义视图

来自分类Dev

Durandal Router-如何在路线定义中将视图定义为模态

来自分类Dev

Durandal Router-如何在路线定义中将视图定义为模态

来自分类Dev

如何从子视图模型绑定到父视图模型中的事件

来自分类Dev

如何从子视图模型绑定到父视图模型中的事件

来自分类Dev

如何控制Durandal中的视图激活顺序

来自分类Dev

如何在Flask Admin中的“多对多”关系中的模型视图中进行自定义查询?

来自分类Dev

如何在Flask Admin中的“多对多”关系中的“模型视图”中进行自定义查询?

来自分类Dev

如何访问Knockout组件中的自定义元素?

来自分类Dev

如何在Yii2中编写全局函数并以任何视图访问它们(不是自定义方式)

来自分类Dev

如何使用Promise将应用程序的视图模型绑定到自定义元素?

Related 相关文章

  1. 1

    如何在Durandal中禁用缓存视图

  2. 2

    如何将视图模型中的功能绑定到swiftui中的自定义视图?

  3. 3

    如何在durandal中组织App?

  4. 4

    如何在 Knockout 中的自定义 bindingHandler 中绑定到自定义模板

  5. 5

    如何在Xamarin表单中创建自定义可绑定视图?

  6. 6

    如何在视图集使用的 Django 模型中添加列的自定义行级处理

  7. 7

    如何在自定义视图类中动态替换自定义子视图?

  8. 8

    如何在MVC中绑定自定义模型类

  9. 9

    如何在Durandal中检测“后退”按钮单击

  10. 10

    如何在Durandal 2中避免全局变量

  11. 11

    如何在Durandal的路线变更中调用全局函数?

  12. 12

    如何在Durandal View中运行脚本

  13. 13

    如何在Android中过滤自定义列表视图

  14. 14

    如何在Android中实现自定义堆栈视图?

  15. 15

    如何在新的NavigationView中添加自定义视图

  16. 16

    如何在Python中创建自定义分组视图?

  17. 17

    如何在片段中实现自定义视图

  18. 18

    如何在presentTextInputControllerWithSuggestions中自定义听写视图

  19. 19

    如何在android中创建自定义视图

  20. 20

    Durandal Router-如何在路线定义中将视图定义为模态

  21. 21

    Durandal Router-如何在路线定义中将视图定义为模态

  22. 22

    如何从子视图模型绑定到父视图模型中的事件

  23. 23

    如何从子视图模型绑定到父视图模型中的事件

  24. 24

    如何控制Durandal中的视图激活顺序

  25. 25

    如何在Flask Admin中的“多对多”关系中的模型视图中进行自定义查询?

  26. 26

    如何在Flask Admin中的“多对多”关系中的“模型视图”中进行自定义查询?

  27. 27

    如何访问Knockout组件中的自定义元素?

  28. 28

    如何在Yii2中编写全局函数并以任何视图访问它们(不是自定义方式)

  29. 29

    如何使用Promise将应用程序的视图模型绑定到自定义元素?

热门标签

归档