如何暂停和取消暂停属性以便在 knockout.js 中按预期工作

Posted

技术标签:

【中文标题】如何暂停和取消暂停属性以便在 knockout.js 中按预期工作【英文标题】:How to suspend and unsuspend property in order to work as expected in knockout.js 【发布时间】:2021-12-21 03:00:00 【问题描述】:

我有一个函数setServiceId(serviceId),通过单击某个按钮调用它,然后我传递该服务的 id。

我还有serviceIdSubscrier = vm.selectedServiceId.supsendableSubscribe(changeServiceId),它监听serviceId的每一个变化(例如,如果我点击id = 5151,然后点击5152,这个事件将被触发并调用一个函数changeServiceId) 但是,现在,我希望当我多次单击相同的服务时也被触发,因为它会在 id 不同时触发(例如,我单击服务 id=5151,然后再次单击 id=5151),我想具有与我单击不同 ID 相同的行为

这是我的全部功能:

function setServiceId(serviceId) 
    vm.selectedServiceId(serviceId);
    jQuery.post(rootUrl + 'spaemployeeadmin/GetFirstSearchFilterDateForParent', 
        locationId: vm.selectedLocationId()
    )
        .done(function (data) 
            var dateObj =  day: data.Day, month: data.Month, year: data.Year ;
            vm.refreshData(dateObj, null);
        );

serviceIdSubscrier = vm.selectedServiceId.supsendableSubscribe(changeServiceId)

function changeServiceId() 
    var currentService = getService();
    if (vm.combineSchedules()) 
        vm.selectedService(currentService || );
        refreshAllowedTimes().then(function () 
            setTimeByPreviousSelection();
            checkToPushCriteria();
        );
     else 
        refreshOnServiceType();
    

【问题讨论】:

【参考方案1】:

如果 serviceId 是一个对象,您可以将其更改为具有相同值的另一个对象,并且会注册更改。

5 === 5 //True
id: 5 === id: 5 //False

【讨论】:

以上是关于如何暂停和取消暂停属性以便在 knockout.js 中按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Sinch 暂停传出的音频或视频

使用 swift 和 spritekit,你如何阻止场景在变得活跃/移动到前台后取消暂停?

多线程下载文件(支持暂停取消断点续传)

暂停和取消暂停条带上的收款

IOS - 暂停和取消暂停当前播放的音乐

条纹支付 - 如何暂停订阅(不取消)