码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-02-19 21:56:05      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

        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

标签:

原文地址:http://www.cnblogs.com/Answer1215/p/5202099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!