dilip kumar
dilip kumar

Reputation: 517

str.replace is not a function in ember 2.1.0

Upgrading Ember project from

Ember.js 1.13.7

Ember-data 1.13.7

to

Ember.js 2.1.0

Ember-data 2.1.0

Getting Following Error

TypeError: str.replace is not a function

model (trends.js)

import DS from 'ember-data';

export default DS.Model.extend({
    name:DS.attr('string',{defaultValue:''}),
    daterangekey:DS.attr('number',{defaultValue:0}),
    daterange:DS.attr(),
    actiondata:DS.attr(),
    criteria:DS.attr('string',{defaultValue:function(){
        return [];
    }}),
    unit:DS.attr('number',{defaultValue:1}),
    viewtype:DS.attr('number',{defaultValue:3})
});

Route (trends.js)

import Ember from 'ember';

export default Ember.Route.extend({

    model:function()
    {
        return this.store.findAll('trend');
    },
});

payload returning form server is

{"trends":[{"viewtype":3,"name":"Trend A","daterangekey":0,"type":1,"unit":1,"actiondata":[{"label":"action 2","id":3}],"criteria":[],"id":"1000000000027"}]}

I'm really trying to wrap my head around EmberJS but I've been stuck here on this for the last two days!

Thanks

Edited

model (trends.js)

import DS from 'ember-data';

export default DS.Model.extend({
    name:DS.attr('string',{defaultValue:''}),
    daterangekey:DS.attr('number',{defaultValue:0}),
    daterange:DS.attr(),
    actiondata:DS.attr(),
    criteria:DS.attr({defaultValue:function(){
        return [];
    }}),
    unit:DS.attr('number',{defaultValue:1}),
    viewtype:DS.attr('number',{defaultValue:3})
});

Upvotes: 2

Views: 743

Answers (2)

Ember Freak
Ember Freak

Reputation: 12872

Just remove "type":1 from the payload. Its bug in ember-data and it has been fixed in 1.13.12 release. https://github.com/emberjs/data/pull/3725

Upvotes: 1

Ebrahim Pasbani
Ebrahim Pasbani

Reputation: 9406

criteria is an array but you define it as string.

Change like this :

criteria:DS.attr({defaultValue:function(){
        return [];
    }}),

Upvotes: 0

Related Questions