mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-31 13:09:21 +03:00
Added support for 'length' property to Knockout observable
This commit is contained in:
parent
d4f8712c1e
commit
fa5476e486
3 changed files with 108 additions and 83 deletions
16
vendors/knockout/src/subscribables/observable.js
vendored
16
vendors/knockout/src/subscribables/observable.js
vendored
|
|
@ -1,4 +1,5 @@
|
|||
var observableLatestValue = Symbol('_latestValue');
|
||||
const observableLatestValue = Symbol('_latestValue'),
|
||||
length = 'length';
|
||||
|
||||
ko.observable = initialValue => {
|
||||
function observable() {
|
||||
|
|
@ -22,6 +23,17 @@ ko.observable = initialValue => {
|
|||
|
||||
observable[observableLatestValue] = initialValue;
|
||||
|
||||
Object.defineProperty(observable, length, {
|
||||
get: () => length in observable[observableLatestValue] ? observable[observableLatestValue][length] : undefined,
|
||||
set: function(value) {
|
||||
if (length in observable[observableLatestValue]) {
|
||||
this.valueWillMutate();
|
||||
observable[observableLatestValue][length] = value;
|
||||
this.valueHasMutated();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Inherit from 'subscribable'
|
||||
ko.subscribable['fn'].init(observable);
|
||||
|
||||
|
|
@ -35,7 +47,7 @@ ko.observable = initialValue => {
|
|||
var observableFn = {
|
||||
'toJSON': function() {
|
||||
let value = this[observableLatestValue];
|
||||
return value.toJSON ? value.toJSON() : value;
|
||||
return value && value.toJSON ? value.toJSON() : value;
|
||||
},
|
||||
'equalityComparer': valuesArePrimitiveAndEqual,
|
||||
peek: function() { return this[observableLatestValue]; },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue