with
是爲了與對象一起使用。所以它對真實性進行了簡單的檢查,認爲零是錯誤的。您可以通過數字轉換爲字符串解決這個問題:http://jsfiddle.net/rG5Xw/11/
編輯:這是基於我對withlight
一個with
更換不這樣做值的任何檢查(例如:http://jsfiddle.net/mbest/rG5Xw/12/):
ko.bindingHandlers['mywith'] = {
'init': function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var bindingValue = ko.utils.unwrapObservable(valueAccessor());
var innerContext = bindingContext['createChildContext'](bindingValue);
ko.applyBindingsToDescendants(innerContext, element);
return { 'controlsDescendantBindings': true };
}
};
ko.virtualElements.allowedBindings.mywith = true;
一個更簡單的例子表明,問題是由於處理零點奇怪而引起的,每當您嘗試創建一個'with'上下文更改爲包含單個零號的屬性時,它將失敗: [link] http: //jsfiddle.net/rG5Xw/9/ 如果您將視圖模型的'item'屬性的值更改爲零,則不會在範圍內呈現任何內容'with'聲明... – kataik
不知道你在說什麼..你的小提琴可以很好的顯示所有3個項目,並且沒有什麼叫'id'。如果我將「名稱」更改爲「ID」,它仍然[正常工作](http://jsfiddle.net/antishok/rG5Xw/10/)。 – antishok
@antishok:「如果您將視圖模型的'item'屬性的值更改爲零,則'with'語句」 – kataik