1

I have been following the ember quick start guide to create an app that displays some data (https://guides.emberjs.com/v2.13.0/getting-started/quick-start/) but instead of displaying just a javascript array with scientists names, I want to display the products from the following json.

I have placed the json file in the public folder.

It looks like:

{
  "products": [
    {
      "_id": "58ff60ffcd082f040072305a",
      "slug": "apple-tree-printed-linen-butterfly-bow-tie",
      "name": "Apple Tree Printed Linen Butterfly Bow Tie ",
      "description": "This fun 40 Colori Apple Tree Printed Linen Butterfly Bow Tie features a design of various apple trees built from tiny polka dots. The back of this bow tie features a polka dot print in complementing colours which when the bow tie is tied will pop out from behind making for a subtle yet unique detail. The playful design, stand out natural linen texture, and colourful combinations make this bow tie a perfect accessory for any outfit!\n",
      "standard_manufacturer": "58cbafc55491430300c422ff",
      "details": "Size: Untied (self-tie) bow tie with an easily adjustable neck strap from 13-3/4'' to 19'' (35 to 48 cm)\nHeight: 6 cm\nMaterial: Printed 100% linen\nCare: Dry clean\nMade in Italy",
      "sizes": [
        {
          "value": "Violet",
          "size": "57722c80c8595b0300a11e61",
          "_id": "58ff60ffcd082f0400723070",
          "marked_as_oos_at": null,
          "quantity": -1,
          "stock": true,
          "id": "58ff60ffcd082f0400723070"
        },

and so on.

My code for the model of the route for displaying the list is as follows

import Ember from 'ember';

export default Ember.Route.extend({
    model() {
        //return ['Marie Curie', 'Mae Jemison', 'Albert Hofmann'];
        return Ember.$.getJSON("/products.json");
    }
});

I have followed the tutorial exactly except for the

return Ember.$.getJSON("/products.json");

line in scientists.js. My data is not being displayed and the error i get in the ember inspector is

compiled.js:2 Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
    at E (compiled.js:2)
    at Object.u (compiled.js:25)
    at compiled.js:25
E   @   compiled.js:2
u   @   compiled.js:25
(anonymous) @   compiled.js:25

I am very new with ember and fairly new with js. Any help appreciated! Thanks!

2 Answers 2

1

Ember comes with Development server(localhost:4200) and it can't be used like a webserver and it can't be used to response ajax request. You can't make this work Ember.$.getJSON("/products.json") with localhost:4200 endpoint.

You need backend any webserver to return response. If you don't have that at present then for development purpose, you need to work with dynamic render data, then I prefer to use ember-cli-mirage addon.

http://www.ember-cli-mirage.com/docs/v0.3.x/

Sign up to request clarification or add additional context in comments.

Comments

1

What about placing the JSON in the app folder and importing it?

import Ember from 'ember';
import yourData from 'your-app/json-file-name.js';

export default Ember.Route.extend({
  model() {
    return yourData;
  }
});

https://ember-twiddle.com/afb9d71933322860938b3936d617a776 - you can use this to try and get a .json working...

There is a thread here too: https://discuss.emberjs.com/t/how-to-import-data-from-json-file-to-ember-app

BUT... don't expect it to properly be in the ember-data store - and function like you'd expect in many situations.

4 Comments

All the 'story' data for this app I built was loaded from a static file in the app directory / so I know it's possible to work with something like this. judge.justicefor.us
You'll likely have to reformat the JSON to be Ember-friendly
Did you mean for line 2: import yourData from 'your-app/json-file-name.json'
@yiannis - In my case, I put the "JSON-like" data in a standard JS file. Good point. I haven't tried it with a standard JSON file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.