Ryan Chandler 4 жил өмнө
parent
commit
f54515479d

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.js.map


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.module.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.module.js.map


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.umd.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
dist/spruce.umd.js.map


+ 4 - 4
src/observable.js

@@ -1,9 +1,9 @@
-import { isNullOrUndefined, isObject } from './utils'
+import { isNullOrUndefined, isObject, isArray } from './utils'
 
 export const createObservable = (target, callbacks) => {
-    Object.keys(target).forEach(key => {
-        if (! isNullOrUndefined(target[key]) && isObject(target[key])) {
-            target[key] = createObservable(target[key], callbacks)
+    Object.entries(target).forEach(([key, value]) => {
+        if (! isNullOrUndefined(value) && (isObject(value) || isArray(value))) {
+            target[key] = createObservable(value, callbacks)
         }
     })
 

+ 3 - 1
src/utils.js

@@ -24,4 +24,6 @@ export const isNullOrUndefined = value => {
 
 export const isObject = _ => {
     return Object.getPrototypeOf(_) === Object.prototype
-}
+}
+
+export const isArray = _ => Array.isArray(_)

+ 23 - 0
tests/observable.spec.js

@@ -40,4 +40,27 @@ test('createObservable > will run callback on set trap', () => {
     observable.foo = 'bob'
 
     expect(fixture).toEqual(100)
+})
+
+test('createObservable > will run set trap for Array.* methods', () => {
+    let target = {
+        items: [
+            'foo',
+            'bar'
+        ],
+    }
+
+
+    let fixture
+
+    let observable = createObservable(target, {
+        set() {
+            fixture = 'baz'
+        }
+    })
+
+    observable.items.push('baz')
+
+    expect(target.items).toContain('baz')
+    expect(fixture).toEqual('baz')
 })

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно