-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathrx.knockout.js
42 lines (37 loc) · 1.41 KB
/
rx.knockout.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(function () {
var global = this,
root = (typeof ProvideCustomRxRootObject == "undefined") ? global.Rx : ProvideCustomRxRootObject();
var observable = root.Observable;
var asyncSubject = root.AsyncSubject;
var observableCreate = observable.Create;
var disposableEmpty = root.Disposable.Empty;
if (!Object.getPrototypeOf) {
Object.getPrototypeOf = function getPrototypeOf(object) {
return object.__proto__ || object.constructor.prototype;
// or undefined if not available in this engine
};
}
if (typeof Object.getPrototypeOf !== 'undefined') {
Object.getPrototypeOf(ko.observable).toObservable = function () {
var koObservable = this;
return observableCreate(function (observer) {
var disposable = koObservable.subscribe(function (data) {
observer.OnNext(data);
});
return function () {
disposable.dispose();
};
});
};
}
root.Observable.prototype.toKoObservable = function () {
var koObservable = ko.observable();
var disposable = this.Subscribe(function (data) {
koObservable(data);
});
koObservable.dispose = function () {
disposable.Dispose();
};
return koObservable;
};
})();