Skip to content

Deeply set values on an Ember Object or POJO

License

Notifications You must be signed in to change notification settings

wozny1989/ember-deep-set

 
 

Repository files navigation

ember-deep-set Download count all time Build Status npm version

ember-deep-set is a simple utility function to deeply set a value on an Ember Object or POJO. Note that this mutates the object.

To install:

ember install ember-deep-set

Why this addon exists

Ember.set will throw an error if you try to set a value on a non-existent object. For example:

Ember.set({}, 'foo.bar.baz', 123); // Property set failed: object in path "foo.bar" could not be found or was destroyed.

With ember-deep-set, you can safely and deeply set values on POJOs as well as Ember.Objects without having to first create the empty intermediate objects.

Usage

import Ember from 'ember';
import deepSet from 'ember-deep-set';

const { get } = Ember;

let company = {};
deepSet(company, 'region.department.director.name', 'Jim Bob');
deepSet(company, 'region.department.name', 'Accounting');
deepSet(company, 'region.name', 'North America');

get(company, 'region.department.name'); // "Accounting"
get(company, 'region.department.director'); // { name: "Jim Bob" }

API

deepSet is designed to be a drop-in replacement to Ember.set:

deepSet( object, key, value )

Parameters:

  • object: {Ember.Object|Object} The object to set values on
  • key: {String} The key to set
  • value: {Any} Value to set

Returns:

  • value: {Any} Value that was passed in

Installation

  • git clone <repository-url> this repository
  • cd ember-deep-set
  • npm install
  • bower install

Running

Running Tests

  • npm test (Runs ember try:each to test your addon against multiple Ember versions)
  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit https://ember-cli.com/.

About

Deeply set values on an Ember Object or POJO

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 88.4%
  • HTML 10.7%
  • Handlebars 0.9%