jquery - 在移动事件后使用 KO_Sortable

标签 jquery knockout.js knockout-2.0 knockout-sortable

我正在尝试将我的项目转换为使用 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);
        };
    };

我有一个 aftermove 事件,应该将 IsDirty 属性设置为 true,但由于某种原因,我必须将对象移动两次,然后数据绑定(bind)才会拾取它。

    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 还是什么?任何帮助将不胜感激!!

最佳答案

您的 IsDirty 属性使用 this.IsDirty = new ko.observable(false); 定义,因此它是可 knockout 的可观察对象。

Observables 是函数,您需要通过使用值作为要设置的参数来调用它们来设置它们的值:

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

演示 JSFiddle

关于jquery - 在移动事件后使用 KO_Sortable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218523/

相关文章:

javascript - pageY on div with overflow-y

drop-down-menu - knockout 选择属性 :{title Binding} not working as expected for Observable array

javascript - Knockout.js 我应该如何将计算值添加到 observaleArray?

knockout.js - 如何绑定(bind)可编辑的 ko.observableArray 可观察字符串?

javascript - KnockoutObservable<string[]> 和 KnockoutObservable<string>[] 之间有什么区别

javascript - knockout 音频播放列表

ajax - jqXHR.getAllResponseHeaders() 不会返回所有 header

javascript - 如何在javascript中自动刷新天气预报

javascript - 从标签文本设置 Bootstrap Modal 中文本框的值

javascript - 通过输入中的输入按钮新建行(ASP.NET MVC)