Code Monkey home page Code Monkey logo

ampersand-collection-underscore-mixin's Introduction

ampersand-collection-underscore-mixin

A mixin for extending ampersand-collection with underscore methods.

Deprecation Notice

As of v4.0.0 this is no longer mixed in to ampersand-rest-collection. Instead it uses ampersand-collection-lodash-mixin to match all other core module's move to using lodash. We no longer recommend using this module individually, and if you are we recommend converting to the lodash mixin.

install

npm install ampersand-collection-underscore-mixin

example

var Collection = require('ampersand-collection');
var underscoreMixin = require('ampersand-collection-underscore-mixin');


module.exports = Collection.extend(underscoreMixin, {
    sampleMethod: function () {
        // now we've got underscore methods 
        // we can call that are applied to models
        // in the collection.
        this.filter( ... );
        this.some( ... );
        this.each( ... )
    }
});

credits

All credit for underscore and this approach in backbone goes to Jeremy Ashkenas and the rest of the Backbone and Underscore authors.

If you like this follow @HenrikJoreteg on twitter.

license

MIT

ampersand-collection-underscore-mixin's People

Contributors

henrikjoreteg avatar kamilogorek avatar latentflip avatar lukekarrys avatar wraithgar avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ampersand-collection-underscore-mixin's Issues

Mark as deprecated with explanation

Once AmpersandJS/ampersand-rest-collection#22 is complete, we should add a deprecation notice to the readme explaining why it is no longer desirable to use this repo since we've made the switch to using lodash everywhere else.

The main reason is that it will increase the filesize by adding an extra underscore dependency that will only be used by this module.

this._reset() is undefined

I was going through the Human JavaScript online videos when I encountered an error during 4-5 "Creating a collection for users".

TypeError: 'undefined' is not a function (evaluating 'this._reset()')

This error is traced back to the Collection function within ampersand-collection.js

function Collection(models, options) {
  options || (options = {});
  if (options.model) this.model = options.model;
  if (options.comparator) this.comparator = options.comparator;
  if (options.parent) this.parent = options.parent;
  this._reset();
  this.initialize.apply(this, arguments);
  if (models) 
    this.reset(models, extend({
      silent: true
    }, options));
}

I think it may have something to do with the recent update to Underscore to 1.7.0, which apparently had some breaking changes. I tried rolling back the dependency to 1.6.0 but it is still breaking.

Any help would be great.

Move to lodash

I've prepared a lodash version of this repo. https://github.com/STRML/ampersand-collection-lodash-mixin

Re: ampersand#36, underscore may be removed entirely from ampersand. However a lot of people like lodash/underscore methods on their collections.

I often use some of the lodash-only syntax like collection.find({prop: 'value'}), so I forked and switched to lodash. Perhaps this could be published as another mixin.

Missing methods

Need to double check that the list of methods captures everything.

At minimum, I know pluck and where are missing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.