2

Ryan Niemeyer のドラッグ アンド ドロップ プラグイン ( http://www.knockmeout.net/2012/02/revisiting-dragging-dropping-and.html ) を使用するようにプロジェクトを変換しようとしています。

アイテムが画面上の新しい場所にドラッグされたかどうかを示す is dirty フラグを実装しようとしています。IsDirty プロパティを使用してこれを実装しました。

var AccountViewModel = function(data) {
        this.$type = 'AccountViewModel';
        this.IsDirty = new ko.observable(false);
        ko.mapping.fromJS(data, mapping, this);

        this.add = function(item) {
            this.Accounts.push(item);
        };
    };

IsDirty プロパティを true に設定する aftermove イベントがありますが、何らかの理由で、データ バインディングがオブジェクトを取得する前にオブジェクトを 2 回移動する必要があります。

    ko.bindingHandlers.sortable.afterMove = function(args) {
        args.item.IsDirty = true;
    };

<div class="accounts" data-bind="sortable: { data: Accounts }">
            <div class="row" data-bind="css: { dirty: IsDirty, newItem: IsNewAccount }">
                <div class="actions item"></div>
                <div class="accountItem item" data-bind="text: IsDirty"></div>
                <div class="accountItem item" data-bind="text: AccountName"></div>
                <div class="accountItem item" data-bind="text: IACode"></div>
                <div class="accountItem item" data-bind="dateFormat: OpenDate"></div>
                <div class="accountItem numberItem item" data-bind="text: T12Revenue"></div>
                <div class="accountItem numberItem item" data-bind="text: AUA"></div>
                <div class="accountItem item"></div>
                <div class="actions item"><img id="delete" src="~/Images/delete.png"/></div>
            </div>
        </div>

KO などで強制的に更新する必要がありますか? どんな助けでも大歓迎です!!

4

1 に答える 1

2

あなたのIsDirtyプロパティはで定義されてthis.IsDirty = new ko.observable(false);いるので、ノックアウト観測可能です。

オブザーバブルは関数であり、設定したい引数として値を呼び出して値を設定する必要があります。

ko.bindingHandlers.sortable.afterMove = function(args) {
    args.item.IsDirty(true);
};

デモJSFiddle

于 2013-08-14T05:18:03.710 に答える