1
我在與創建上下文定製的淘汰賽結合處理問題的子元素。示例如下:http://jsfiddle.net/gf3tfarz/14/淘汰賽自定義綁定處理程序不更新
'容器'應用於可觀察數組時,它不更新子元素。
<div data-bind="container: { data: selectedCountry().ids }">
<p>Error: <span data-bind="text: $container.data().length"></span></p>
<div data-bind="foreach: $container.data">
<p>Error: <span data-bind="text: $data"></span></p>
</div>
</div>
這是自定義綁定處理程序:
ko.bindingHandlers.container = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var innerBindingContext = bindingContext.extend({
$container: ko.utils.unwrapObservable(valueAccessor())
});
ko.applyBindingsToDescendants(innerBindingContext, element);
return { controlsDescendantBindings: true };
}
};
我想,使用的示範工作「容器」目前這兩個例子中的一種方式。
注意使用「與」它的工作原理。
對不起,_what_是錯的小提琴?我們在看什麼?我們如何知道它不起作用?你知道嗎?究竟發生了什麼?這似乎對我有用。 – 2014-11-21 19:29:47
「選擇」更改後,「錯誤:」之後的所有文本都不會更新。這是錯誤。在我看來,它應該像「Ok:」之後的所有文本一樣改變,它使用不同的技術。 – 2014-11-22 02:05:06
一個或多或少容易的解決辦法是把你的$容器放入一個計算:http://jsfiddle.net/wn5zp9qu/。然而,在這種情況下,你必須寫'$容器()'每一個地方,你要使用它:'數據綁定=「的foreach:$容器()數據」' – nemesv 2014-11-22 14:03:44