Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 了解如何使用绑定获取父对象_Knockout.js_Knockout 2.0 - Fatal编程技术网

Knockout.js 了解如何使用绑定获取父对象

Knockout.js 了解如何使用绑定获取父对象,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,我的点击绑定没有调用全名函数 什么是正确的方式来称呼这个 <div> <div data-bind="with: test.name" > <div> <span data-bind="text:firstName"></span> <span data-bind="text:firstName"></span> <br />

我的点击绑定没有调用全名函数 什么是正确的方式来称呼这个

<div>
    <div data-bind="with: test.name" >
        <div>
        <span data-bind="text:firstName"></span>
        <span data-bind="text:firstName"></span>
        <br />
        <div>
        <span data-bind="click: $parent.fullName">FullName</span>
    </div>
</div>

modal = function(){
    var firstName = ko.observable('jhon'),
        lastName = ko.observable('deo'),
        test = {
            name : {
              firstName: firstName,
              lastName: lastName
           },
            fullName : function(){
                alert(name.firstName() + name.lastName());
            }
        };

    return {
        test: test
    }
}();

ko.applyBindings(modal);


全名 模态=函数(){ var firstName=ko.observable('jhon'), lastName=ko.observable('deo'), 测试={ 姓名:{ 名字:名字, 姓氏:姓氏 }, 全名:函数(){ 警报(name.firstName()+name.lastName()); } }; 返回{ 测试:测试 } }(); ko.应用绑定(模态);
$parent元属性指的是绑定层次结构中紧靠上方的绑定,而不是视图模型中的父对象。由于with位于主绑定上下文中,$parent引用根视图模型

如果需要访问菜单,可以将其嵌套在另一个绑定中:

<div data-bind="with: test">
  <div data-bind="with: name">
  [...]
    <button data-bind="click: $parent.fullName">Click</button>
  </div>
</div>

[...]
点击
或限定从父绑定开始的调用(示例中为模式绑定或根绑定):

点击

关于绑定上下文与模型层次结构的一点说明:

使用原始绑定,当您应用with:test.name绑定时,绑定上下文如下所示:

<body> <!-- binding context: [modal] -->
  <div data-bind="with: test.name"> <!-- binding context: [modal|test.name] -->

相反,当应用上面显示的嵌套绑定时,层次结构将更改为:

<body> <!-- bc: [modal] -->
  <div data-bind="with: test"> <!-- bc: [modal|test] -->
    <div data-bind="with: name"> <!-- bc: [modal|test|name] -->

您的单击事件应如下所示:

<span data-bind="click: $parent.test.fullName">FullName</span>
全名

我已经更新了你

请看这段代码为什么你这么做太复杂了,而你可以在SimpleB中这样做,但我如何才能将对象传递给函数,即单击这是一个完全不同的问题,与绑定级别无关。当从单击绑定调用方法时,它将接收当前绑定目标(即$data)作为参数。您可以在您的案例中使用它:
fullname:function(obj){alert(obj.firstName+obj.lastName);}
<span data-bind="click: $parent.test.fullName">FullName</span>