[Immutable + AngularJS] Use Immutable .List() for Angular array

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Immutable + AngularJS] Use Immutable .List() for Angular array相关的知识,希望对你有一定的参考价值。

        const stores = Immutable.List([
            {
                name: ‘Store42‘,
                position: {
                    latitude: 61.45,
                    longitude: 23.11,
                },
                address: ‘whatever‘
            },
            {
                name: ‘Store2‘,
                position: {
                    latitude: 61.48,
                    longitude: 23.87
                },
                address: ‘whatever‘
            },
            {
                name: ‘Store3‘,
                position: {
                    latitude: 61.41,
                    longitude: 23.76
                },
                address: ‘whatever‘
            },
            {
                name: ‘Store4‘,
                position: {
                    latitude: 61.42,
                    longitude: 23.40
                },
                address: ‘whatever‘
            }
        ]);

class StoreService {
    constructor( $q) {
        this.$q = $q;

        this.mockStores = stores;
    }

    getStores( position ) {
        return this.$q( ( resolve )=> {
            return resolve( this.mockStores.toArray() );
        } );
    }
}

export default ( ngModule ) => {
    ngModule.service( ‘StoreService‘, StoreService );
}

 

Try to only keep ‘serivce‘ to deal with Immutable data, controller should have no knowledge about whether the data in mutable type or immutable type.

 

So when return the data to the controller, we sue ‘.toArray()‘ method to convert the Immutable data structure to normal javascript array method.

 

------------------------------

 

The reason here we use both ‘const‘ and Immutable is because:

 const _person = {
            name: "Zhentian"
        };

class StoreService {
    constructor(  ) {
        this.person = _person;

        this.person.name = "John";
        console.log(_person.name); // --> John

    }

}

export default ( ngModule ) => {
    ngModule.service( ‘StoreService‘, StoreService );
}

 

In the contructor we define:  ‘_person‘ assign to ‘this.person‘, even _person is const type, but when we try to modiy the data thougth this.person object, we found actually we are able to do that.

So the const is not safe when deal with object!

So we still need Immutable to help us to keep data immutable.

以上是关于[Immutable + AngularJS] Use Immutable .List() for Angular array的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:一次在数组中显示一个特定对象

将参数从 Angularjs 传递给 Django

[Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types

[Immutable.js] Transforming Immutable Data with Reduce

[Immutable,js] Iterating Over an Immutable.js Map()

immutable