我正在使用KO可观察数组,我试图在自己的.subscribe方法中更改其可观察字段之一,这会导致两次触发相同的事件。 我怎么能避免这个? 代码
$.each(self.PricingList(), function (i, pricing) {
var previousValue = pricing.Currency().code();
pricing.Currency().code.subscribe(function () {
ShowConfirmation(null, 'Are you sure ?',
function () {
// will be executed if user click on Yes
},function () {
// Will be executed if user clicks No
// How can i restore previous value ?
pricing.Currency().code(previousValue);
// the moment i change currency code's value its showing me confirmation dialog again, which i want to avoid.
});
});
答案 0 :(得分:0)
$.each(self.PricingList(), function (i, pricing) {
pricing.Currency().code.subscribe(function (previousValue) {
ShowConfirmation(null, 'Are you sure ?',
function () {
},function () {
pricing.Currency().code(previousValue);// this line calls subscribe method again because the value in this observable changes, so try to remove this line from here.
});
}, null, "beforeChange");
答案 1 :(得分:0)
这不是您问题的直接答案,但我相信如果我假设正确,它将解决潜在的问题:您正在尝试进行可选的可撤消更改。
如果你看一下这个blog post,它描述了一种方法,你可以在提供beginEdit
和cancelEdit
函数的观察者周围使用包装器(类似于扩展器),可以调用它们必需的。
this Github repo中提供了此源代码。