私は次のビューモデルを持っています:
var ViewModel = function(setData, dummyCard) {
var self = this;
ko.mapping.fromJS(setData, {}, self);
self.cardCount = ko.computed(function() {
//debugger;
return self.cards().length;
});
self.editing = ko.observable(false);
self.edit = function () {
debugger;
self.editing(true);
};
};
このviewModelは、セットに属するカードのリストを表示するために使用されます。次の方法で、ユーザーがこれらのカードの面を編集できるようにしようとしています (両方の面を同時に)。
<!-- ko foreach: cards -->
<!-- ko foreach: sides -->
<div data-bind="visible: !$root.editing()" class="span5 side-study-box">
<p data-bind="text: content">SIDE 1</p>
</div>
<!-- /ko -->
<!-- /ko -->
ここの例ごとに編集機能を追加しました (Bert Bertington の hasFocus の例を参照してください): http://knockoutjs.com/documentation/hasfocus-binding.html
ただし、Edit プロパティは $parent (Card) オブジェクトではなく $root (Set) オブジェクトに関連付けられているため、これはうまく機能しません。これを機能させるには、次のように「作成」メソッドが必要だと思います:ノックアウト JS マッピング プラグインを使用して作成されたビュー モデルにプロパティを追加する
これらのプロパティを側の親に持ち込むには、どのような構文が必要ですか?
編集:これまでのところ:
var ViewModel = function(setData, dummyCard) {
var self = this;
var cardModel = function(data) {
debugger;
ko.mapping.fromJS(data, {}, this);
this.editing = ko.observable(false);
this.editing = function() {
debugger;
this.editing(true);
};
};
var mapping = {
'cards': {
create: function(options) {
return new cardModel(options.data);
}
}
};
self.cardCount = ko.computed(function() {
//debugger;
return self.cards().length;
});
ただし、残りの js ではうまく機能しません。現在、「cards()」は未定義です。今掘り下げていますが、誰かヒントがあれば、私はすべて耳にします!