[英]How do i update observable array in knockout binding handler?
我想在敲除綁定處理程序中更新可觀察數組。 但是它沒有更新。 我嘗試了以下代碼,但沒有解決。
this.DropdownValues = ko.observableArray([
{ id: 0, type: "Arc",Checked:false },
{ id: 1, type: "Eve",Checked:false },
{ id: 2, type: "Ca",Checked:false },
{ id: 3, type: "test",Checked:false },
]);
我在綁定處理程序中編寫的代碼。
var value = valueAccessor();
var valueUnwrapped = ko.unwrap(value);
console.log("true");
valueUnwrapped.map(function(item){
item[Checked]= true; return item;
});
ko.utils.unwrapObservable(value(valueUnwrapped));
但是我的觀點仍然沒有發現這些價值。 foreach不會刷新。
您錯過了Checked
一詞的引號。 應該是item['Checked']
或item.Checked
而不是item[Checked]
。
ko.bindingHandlers.updateArray = { update: function (element, valueAccessor, allBindingsAccessor, viewModel) { var value = valueAccessor(); var valueUnwrapped = ko.unwrap(value); $("#before").text(JSON.stringify(valueUnwrapped)); console.log("true"); valueUnwrapped.map(function(item){ item['Checked']= true; return item; }); ko.utils.unwrapObservable(value(valueUnwrapped)); } } var viewModel = function(){ var self = this; self.DropdownValues = ko.observableArray([ { id: 0, type: "Arc",Checked:false }, { id: 1, type: "Eve",Checked:false }, { id: 2, type: "Ca",Checked:false }, { id: 3, type: "test",Checked:false }, ]); }; ko.applyBindings(new viewModel());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> Before:<br> <span id="before"></span> <div data-bind="updateArray: DropdownValues"> </div> <br><br> After:<br> <span data-bind="text: ko.toJSON(DropdownValues)"></span>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.