Tüm gözlenebilirleri varsayılan olarak derecelendirmek için knockout.js yolunda bir yol var mı?Tüm gözlenebilirlikleri varsayılan olarak sınırlandırma oranı
Gözlemlerim tek tek extend
'a sahip olmak istemiyorum.
Tüm gözlenebilirleri varsayılan olarak derecelendirmek için knockout.js yolunda bir yol var mı?Tüm gözlenebilirlikleri varsayılan olarak sınırlandırma oranı
Gözlemlerim tek tek extend
'a sahip olmak istemiyorum.
ko.observable
üzerinde, kodunuza bazı sözdizimsel şeker ekleyen bir işlev oluşturabilirsiniz. böylece yazma yerine http://knockoutjs.com/documentation/fn.html
ko.observable(value).extend({rateLimit: 500})
ben henüz bu test sığınak ko.observable(value).limit(500)
yazmak mümkün olabilir ama bu da muhtemelen özel bir bağlama keşfetmeye değer olacağını data-bind="rateLimitValue: fullName"
yapabilirsiniz ko.observable yerine kullanılacak bir işlev oluşturun. Bu sadece kurtarmak için yazmaya yapmak, kendim: davanızı için var KOB = ko.observable;
, bu (bir şey) gibi olacaktır:
var KOB = function (value) {
return ko.observable(value).extend({rateLimit:500});
};
Maymun bkz maymun yapar: maymun yama!
Ama önce, AFAIK'ın Knockout özelliği ile istediğiniz şeyi yapmanın bir yolu olmadığını söyleyeyim; Gelecekteki tüm gözlenebilirler için varsayılan oran limitlerini ayarlamak için küresel bir ayar yoktur (ko.globalSettings["defaultRateLimit"]
gibi).
Yine de, işte tam olarak istediğin gibi yapmak için basit bir şekilde maymun nakavt yapmaktır. Bununla birlikte, bunun oldukça geç/son çare olduğunu düşünürüm: maymun yamalarıyla, bir çerçevenin gelecekteki sürümlerini nasıl etkileyeceğini asla bilemezsiniz. Ayrıca, bu, ko.observable
'u değiştirilemeyecek şekilde değiştirir, böylece istediğinizi yapar, istisna yoktur. Daha kapsamına sahip çözüm için
(function() {
var originalObservableFn = ko.observable;
ko.observable = function(x) {
return originalObservableFn(x).extend({rateLimit: 1500});
}
})();
var vm = {
myValue: ko.observable("initial value")
};
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
Change value here: <input data-bind="textInput: myValue" autofocus /><br />
Read only version: <span data-bind="text: myValue"></span>
Hız sınırı global ayar mı yoksa ayarlanabilir mi? – BillPull
Gerçekten ne yaptığınızı bilmediğiniz veya çok sınırlı gözlenebilir uygulamalara sahip olmadığınız sürece bunu gerçekten yapmamalısınız. Bunların tümünü sınırlayan oran bağımlılıkların rastgele sırayla tetikleneceği anlamına gelir ve mantığınız bazen işe yarayabilir ancak diğer zamanlarda kırılabilir. Ayrıca gözlemlenebilir kullanan herhangi bir şeyle uğraşırdınız. Sadece böyle çılgın şeyler yaparken dikkatli ol. – Milimetric
Bu benim eklentim [knockout-ertelenmiş güncellemeler] (https://github.com/mbest/knockout-deferred-updates) için uygun bir görev olabilir. Ayrıca Knockout'un bir sonraki sürümü için benzer işlevsellik sağlama sürecindeyiz. –