ウェブサイトを最新の JQuery、JQueryUI、KnockOutJS に更新しました。
それ以来、監視可能な配列に項目を追加すると、アコーディオンが更新を拒否します。これは、JQuery の古いバージョンで KnocKOutJS バージョン 2.0.0 を使用する場合に問題なく機能します。
JSFiddler で問題を再現しました。助けていただければ幸いです。JavaScript は、実際のコードを大幅に簡略化したものです。
http://jsfiddle.net/glenb/M9222/6/
どんな援助でも大歓迎です。私のモデルは次のようになります。
function ModelCollection() {
var self = this;
self.ModelItems = ko.observableArray([]);
self.AddNewItem = function(){
var newItem = new ModelItem();
newItem.Name = "Added";
modelCollectionApp.ModelItems.push(newItem);
};
}
function ModelItem() {
var self = this;
self.Name = "";
}
HTML:
<div id="knockOutBinding">
<div data-bind="foreach: ModelItems, jqAccordion: {}">
<h3>An Element Title</h3>
<div>Some Content</div>
</div>
<button data-bind="click: AddNewItem">Add New Item</button>
</div>
最後に、最初にデータを入力してバインドします
var modelCollectionApp = new ModelCollection();
var modelItem = new ModelItem();
modelItem.Name = "test1";
modelCollectionApp.ModelItems.push(modelItem);
var modelItem = new ModelItem();
modelItem.Name = "test2";
modelCollectionApp.ModelItems.push(modelItem);
ko.applyBindings(modelCollectionApp, document.getElementById("knockOutBinding"));