I’m using ember-cli (0.2.3) and I’ve to show a list of models plus additional metadata informations:
This is my route:
import Ember from 'ember'
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'
export default Ember.Route.extend AuthenticatedRouteMixin,
model: ->
@store.findQuery 'dashboard', scope: 'personal'
renderTemplate: ->
@render 'dashboards.index'
this is my current template (emblem):
ul.nav.nav-tabs
li
link-to 'dashboards.personal'
%span Personal
.counter = meta.counters.personal
... etc
and my current controller:
import Ember from 'ember'
export default Ember.Controller.extend
meta: Ember.computed 'model.isLoaded', ->
@store.metadataFor 'dashboard'
this works fine on first load, but navigating from another page generates this exception:
Error while processing route: dashboards.published Cannot convert object to primitive value TypeError: Cannot convert object to primitive value
at SETTER_FUNCTION [as counters] (http://localhost:4200/assets/vendor.js:25664:98)
at Object.merge (http://localhost:4200/assets/vendor.js:24217:22)
at ember$data$lib$system$store$$Service.extend.setMetadataFor (http://localhost:4200/assets/vendor.js:72915:15)
at ember$data$lib$system$serializer$$default.extend.extractMeta (http://localhost:4200/assets/vendor.js:65891:17)
at ember$data$lib$system$serializer$$default.extend.extract (http://localhost:4200/assets/vendor.js:65634:14)
at http://localhost:4200/assets/vendor.js:67404:32
at Object.Backburner.run (http://localhost:4200/assets/vendor.js:10766:27)
at ember$data$lib$system$store$$Service.extend._adapterRun (http://localhost:4200/assets/vendor.js:73545:33)
at http://localhost:4200/assets/vendor.js:67403:15
at tryCatch (http://localhost:4200/assets/vendor.js:57486:16)
basically setMetadataFor tries to run Object.merge and it throws an error since it uses = and not Ember.set()
As a workaround using Ember.copy @store.metadataFor('dashboard') works fine but I don’t think it’s the best solution.
What’s the correct way to access metadata from template?
PS: I’ve tried to just use model.meta.counters.personal but it doesn’t work.