javascript - 在挖空視圖中訪問$ parent的$ parent - 嵌套上下文





knockout.js (3)


您可以使用$parentContext.$parent

$parentContext提供許多有用的屬性,如( $data$parent$index ,...)

為簡潔起見更新

我如何才能在嵌套Knockout foreach /綁定中引用$ parents的$ parent?

示例 -

    <!-- ko foreach: grandParent -->
        <tr>
            <!-- ko foreach: $parent.parents --> // <-- Doesn't work
                <!-- ko foreach: children -->
                    <td data-bind="if: favToy().name == $parent.$parent.favToy().name">
                        <span data-bind="text: favToy().name"></span>
                    </td>
                <!-- /ko -->
            <!-- /ko -->
        </tr>
    <!-- /ko -->

原版的

對不起,令人困惑的問題,但我想達到二級父母的價值,以檢查當前上下文(如下)的價值,只顯示一個跨度,如果它匹配$父母的$父母的價值(唉!)

    <!-- ko foreach: grandParent -->
        <tr>
            <!-- ko foreach: $parent.parents -->
                <!-- ko foreach: children -->
                    <td data-bind="if: favToy().name == $parent.$parent.favToy().name">
                        <span data-bind="text: favToy().name"></span>
                    </td>
                <!-- /ko -->
            <!-- /ko -->
        </tr>
    <!-- /ko -->

這樣做會更容易,但從我讀過的這是不可能的或我做錯了:)

    <!-- ko foreach: grandParent -->
        <tr>
            <!-- ko foreach: $parent.parents -->
                <!-- ko foreach: children ? favToy().name == $parent.$parent.favToy().name -->
                    <td  data-bind="text: favToy().name"></td>
                <!-- /ko -->
            <!-- /ko -->
        </tr>
    <!-- /ko -->

任何幫助將不勝感激。




使用$parents陣列,祖父母將是$parents[1] 。 如果您示例中的grandParentgrandParent最頂層父項,您也可以使用$root

docs

$父母

這是一個代表所有父視圖模型的數組:

$ parents [0]是父上下文的視圖模型(即,它與$ parent相同)

$父母[1]是來自祖父母背景的視圖模型

$父母[2]是來自曾祖父母的視角模型

… 等等。

$根

這是根上下文中的主視圖模型對象,即最上面的父上下文。 它通常是傳遞給ko.applyBindings的對象。 這相當於$ parents [$ parents.length - 1]。




正如vsync所提到的,沒有事件,但您可以使用計時器或在其他地方附加處理程序:

// get the height
var refreshDocHeight = function(){
    var h = $(document).height();
    $('#result').html("Document height: " + h);
};

// update the height every 200ms
window.setInterval(refreshDocHeight, 200);

// or attach the handler to all events which are able to change 
// the document height, for example
$('div').keyup(refreshDocHeight);

這裡找到jsfiddle





javascript knockout.js