如何暂停和取消暂停属性以便在 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 中按预期工作的主要内容,如果未能解决你的问题,请参考以下文章