如何在ember JS中创建一个全局对象数组

时间:2015-06-25 07:09:19

标签: ember.js

我刚刚开始学习ember JS,所以这个问题可能听起来很愚蠢。我正在尝试使用ember v 1.12.0设计一个类似网站的博客。现在,我正在使用静态数据作为帖子。它们看起来像这样:

var posts=[{
      id:1,
      author:{name:"Clark Kent",age:32},
      identity: "Superman",
      Description: "Alien",
      date: new Date('1-1-15'),
      body: 'Stands for hope'
    },
    {
      id:2,
      author:{name: "Bruce Wayne",age:31},
      identity:"Batman",
      Description: "Billionaire",
      date: new Date('1-1-16'),
      body: 'Stands for fear'
    }];

我想使这个全局化,以便可以从多个容器访问它,并且当我动态编辑细节时数据仍然存在。我知道这可能不是一个好习惯。但是,现在,我只是想构建这个页面。所以你的帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

理想情况下,您可以使用Ember-data,因为这正是它的设计目标。您只需要为数据定义一个简单的模型。请查看ember models的指南。

如果您使用Ember-CLI(建议使用),则包含ember数据,您只需使用命令行创建新模型并将数组添加为固定装置。

ember g model posts

你的ember-cli模型看起来像是:

let Posts = DS.Model.extend({
      authorName: DS.attr('string'),
      authorAge: DS.attr('string'),
      identity: DS.attr('string'),
      Description: DS.attr('string'),
      body: DS.attr('string'),
      date:  DS.attr('date')
});

Posts.reopenClass({
  FIXTURES: [{
      id:1,
      authorName: "Clark Kent",
      authorAge: 32,
      identity: "Superman",
      Description: "Alien",
      date: new Date('1-1-15'),
      body: 'Stands for hope'
    },
    {
      id:2,
      authorName: "Bruce Wayne",
      authorAge: age:31,
      identity:"Batman",
      Description: "Billionaire",
      date: new Date('1-1-16'),
      body: 'Stands for fear'
    }];
});

导出默认文档管理器

然后可以在任何地方加载此模型:

this.store.find('posts', 1);

否则你需要从github或bower获取ember-data lib并创建一个简单的模型:

App.ApplicationAdapter = DS.FixtureAdapter;

App.Documenter = DS.Model.extend({
      authorName: DS.attr('string'),
      authorAge: DS.attr('string'),
      identity: DS.attr('string'),
      Description: DS.attr('string'),
      body: DS.attr('string'),
      date:  DS.attr('date')
});

App.Documenter.reopenClass({
  FIXTURES: [{
      id:1,
      authorName: "Clark Kent",
      authorAge: 32,
      identity: "Superman",
      Description: "Alien",
      date: new Date('1-1-15'),
      body: 'Stands for hope'
    },
    {
      id:2,
      authorName: "Bruce Wayne",
      authorAge: age:31,
      identity:"Batman",
      Description: "Billionaire",
      date: new Date('1-1-16'),
      body: 'Stands for fear'
    }];
});

再次使用这种方法,您可以致电:

this.store.find('posts', 1);

从商店取回您的数据。

这通常用在路线的模型钩子中:

App.PostsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('posts', 1); 
  }
});

顺便说一句,我建议看看一些ember-cli教程。

最后,如果你真的不想这样做,或者现在就学习ember方式,你可以随时把JSON扔进localStorage。但是如果你打算使用Ember,我真的会把时间花在USE ember上,ember-data与ember非常合作,并且具有很多优点。

答案 1 :(得分:0)

如果您正在学习使用ember,我建议您一边学习如何使用ember-cli

也就是说,如果你想让变量成为一个全局变量,你可以将它放在index.html文件的脚本标签或者总是包含的任何其他文件中。取决于你的文件。