标签: ember-model

在定义模型时使用DS.model或Ember.model或Ember.Object?

这个截屏视频:http://www.embercasts.com/episodes/getting-started-with-ember-model用于Ember.model创建这样的人物模型:

App.Person = Ember.Model.extend({
    name : Ember.attr()
})
Run Code Online (Sandbox Code Playgroud)


文档给出了用这个例子Ember.Object

App.Person = Ember.Object.extend({
    say : function(thing) {
        alert(thing);
    }
});
Run Code Online (Sandbox Code Playgroud)

此外,在定义模型部分下,给出了该示例使用的示例DS.model

App.Person = DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  birthday: DS.attr('date'),

  fullName: function() {
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName')
});
Run Code Online (Sandbox Code Playgroud)

这三者之间有什么区别以及何时使用哪种?

javascript-framework ember.js ember-data ember-model

20
推荐指数
1
解决办法
5037
查看次数

Ember-table与Ember-model/Ember-data集成

我试图将ember-models链接到ember-table以从服务器中提取分页记录,并在向下滚动时将它们添加到表中.

我可以通过在http://addepar.github.io/ember-table/上的ajax示例中请求我的api url来获取它的工作,但我无法弄清楚如何将它与ember-model集成以创建和ember对象,然后将它们添加到表中.

这是我的代码,只是发出ajax请求并添加到表.任何人都可以告诉我如何改变这个使用ember-model/ember-data代替.

App.TableAjaxExample = Ember.Namespace.create()

App.TableAjaxExample.LazyDataSource = Ember.ArrayProxy.extend

  createGithubEvent: (row, event) ->

    row.set 'id',       event.id
    row.set 'name',  event.name
    row.set 'isLoaded',   yes

  requestGithubEvent: (page) ->

    content = @get 'content'
    start   = (page - 1) * 30
    end     = start + 30
    per_page = 40
    # something like this ???
    #App.Detail.find(type: 'companies', page: page, per_page: per_page).on 'didLoad', ->
    url = "http:/myurl.dev/admin/details.json?type=companies&page=#{page}&per_page=30"
    Ember.$.getJSON url, (json) =>
      json.details.forEach (event, index) =>
        row = content[start + index]
        @createGithubEvent row, event
    [start...end].forEach …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-table ember-model ember-1

11
推荐指数
1
解决办法
4026
查看次数

model.save()与model.get('store')之间的区别.commit()

有什么区别

// 'this' is the controller
this.get('model').save();
Run Code Online (Sandbox Code Playgroud)

// 'this' is the controller
this.get('model').get('store').commit();
Run Code Online (Sandbox Code Playgroud)

在我做的小测试中,他们都给了我相同的结果.我应该使用哪一个?

我调查了第一个,它调用了

DS.Model = Ember.Object.extend(
  ...
  save: function() {
    this.get('store').scheduleSave(this);

    var promise = new Ember.RSVP.Promise();

    this.one('didCommit', this, function() {
      promise.resolve(this);
    });

    return promise;
  }, 
Run Code Online (Sandbox Code Playgroud)

那么问题就变成了,this.get('store').scheduleSave(this)和之间的主要区别是this.get('store').commit()什么?

DS.Store = Ember.Object.extend(DS._Mappable, {
  ...
  scheduleSave: function(record) {
    get(this, 'currentTransaction').add(record);
    once(this, 'flushSavedRecords');
  },
  ...
  /**
    This method delegates committing to the store's implicit
    transaction.

    Calling this method is essentially a request to persist
    any changes …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-model

10
推荐指数
1
解决办法
5594
查看次数

Ember深层嵌套的路由不保留父动态参数

我有这个ember应用程序:

Ember       : 1.3.2
Ember Model : 0.0.11
Handlebars  : 1.3.0
jQuery      : 1.9.1 
Run Code Online (Sandbox Code Playgroud)

使用此资源图:

App.Router.map(function () {
  this.resource('dimensions', function() {
    this.resource('dimension', { path: ':dimension_id'}, function () {
      this.resource('value', { path: 'values/:value_id' });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

这允许我嵌入{{outlet}}填充"维度"模板的"维度"模板,并嵌入{{outlet}}填充"值"模板的"维度"模板中.

除了"值"模板中的链接到帮助程序之外,所有工作都很顺利,它不接受更多参数,也不接受其他模型,如ember API文档中所述.

哪个是在深层嵌套路由中处理链接的最佳方法?

我有这个小提示来表明我的问题:http: //jsfiddle.net/vsiguero/pQpE3/5/

谢谢你的帮助!

handlebars.js ember.js ember-router ember-model

10
推荐指数
3
解决办法
4275
查看次数

如何从Ember CLI中的Route访问Ember Model

也许使用常规的Ember应用程序,将所有代码放在app.js中对我来说会更容易.但由于我使用的是Ember CLI,因此无法在我的路线中访问我的模型.我还在尝试学习如何使用Ember CLI,所以请帮帮我.

因为我只想激活AJAX调用并在我的UI上渲染数据,所以我下载并将Ember Model库添加到我的项目中.我认为不需要使用Ember Data.这是我所指的Ember Model文档:https://github.com/ebryn/ember-model#example-usage.话虽如此,这是Ember CLI提出的我的目录结构:

|-app    
  |-controllers
  | |-customers.js
  |-models    
  | |-customers.js
  |-routes    
  | |-customers.js
  |-templates    
  | |-customers.hbs
  |-app.js
  |-index.html
  |-main.js
  |-router.js
Run Code Online (Sandbox Code Playgroud)

这是我只关注问题的实际项目结构的更简单的表示.正如Ember Model文档中提出的,我将以下代码添加到我的Customers模型(model\customers.js)中:

export default Ember.Model.extend({
    nameid: attr(),
    firstname: attr(),
    middlename: attr(),
    lastname: attr(),        
    prefixname: attr(),
    suffixname: attr()
});

this.url = "http://restapi/api/customers";
this.adapter = Ember.RESTAdapter.create();
Run Code Online (Sandbox Code Playgroud)

请注意,我必须执行"export default"而不是"App.Customers = Ember.Model.extend ...".这是Ember CLI惯例.因此,当我尝试访问我在Customers Route中创建的模型时,我收到错误"加载路径时出错:ReferenceError:App未定义"..

客户路线代码:

export default Ember.Route.extend({
    model: function () {
        App.Customers.find();
    },

    actions: {
        addnew: function(){
            //logic of saving edited customer
            alert('customer …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-model ember-cli

8
推荐指数
1
解决办法
6563
查看次数

如何在不清除本地存储的情况下删除与ember模型关联的所有记录?

我已经扩展了此stackoverflow答案中给出的程序,以便有一个程序一次性删除所有记录.但是,删除仅在批处理中发生,并且不会一次删除所有内容.

这是我在这个JSBin中使用的函数的片段.

deleteAllOrg: function(){
  this.get('store').findAll('org').then(function(record){
    record.forEach(function(rec) {
        console.log("Deleting ", rec.get('id'));
        rec.deleteRecord();
        rec.save();
    });
    record.save();
  });
}
Run Code Online (Sandbox Code Playgroud)

知道如何修改程序,以便可以立即删除所有记录吗?

我也尝试过model.destroy()和model.invoke('deleteRecords')但它们不起作用.

任何帮助是极大的赞赏.谢谢你的帮助!

local-storage ember.js ember-data ember-model

6
推荐指数
1
解决办法
4602
查看次数

使用ember模型对数据进行侧载的正确方法

我试图理解使用ember-model来侧载数据的正确方法

我让json像这样回来(为了空间的缘故,我把它从实际的json中减去了一点)

{
  "classrooms" : [
    {
      "classroom_name" : "Class 1",
      "id" : 1,
      "teacher_id" : 3,
      "grade" : 5,
      "assignments" : [

      ],
      "students" : [
        {
          "id" : 5,
          "last_name" : "Ford",
          "first_name" : "Henry",
          "district_id_number" : "MD454"
        }
      ]
    },
    {
      "classroom_name" : "Class 3",
      "id" : 2,
      "teacher_id" : 3,
      "grade" : 4,
      "assignments" : [
        {
          "id" : 5,
          "assignment_overview" : "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-model

5
推荐指数
1
解决办法
3301
查看次数

如何使用ember-model定义枚举

在我的ember模型模型中,我需要从枚举中设置String属性.有没有可能与ember模型?

通过示例我想要一个Book模型:

App.Book({
    id: Ember.attr(),
    title: Ember.attr( 'String' ),
    author: Ember.attr( 'String' ),
    status: App.BookStatus
});
Run Code Online (Sandbox Code Playgroud)

App.Book.Status作为具有3个可能值的枚举"FREE", "BORROW", "LOST"并使用它:

var myBook = App.Book.create({
    title:'myBook', 
    author:'fred', 
    status: App.BookStatus.FREE
})
Run Code Online (Sandbox Code Playgroud)

我需要等同于Java Enum功能

public enum BookStatus {
    FREE, BORROW, LOST 
}

class Book {
    BookStatus bookStatus;
}

Book bookInstance = new Book();
bookInstance.bookStatus=BookStatus.LOST;
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-model

5
推荐指数
1
解决办法
4003
查看次数

迭代一个ember模型查询

this.store.findAll('game').then(function(results){
   // RUN SOME OPERATION ON THEM
})
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用结果变量.我明白我能做到

results.get('firstObject') // returns the first object.
Run Code Online (Sandbox Code Playgroud)

我想知道我能用它做的一切.是否有结果集合的api文档?

谢谢!

ember.js ember-model

3
推荐指数
1
解决办法
1799
查看次数

ember js如何将对象推送到ArrayController中的堆栈顶部

我有这个控制器从服务器获取数据我必须触发fetchPosts方法并添加新的火灾后add

App.PostsController = Ember.ArrayController.extend({
  actions: {
    fetchPosts: function (id) {
      var data = App.Post.find({category: id});
      this.set('model', data);
    },
    add: function () {
      var post = this.get('newPost');
      post.save().then(function () { 
        this.pushObject(post);
      });
   }
});
Run Code Online (Sandbox Code Playgroud)

问题是记录正在添加到列表的底部.我希望它像本机js一样工作,unshift但现在它的工作方式就像push.寻找类似于unshiftObject使添加的对象成为数组中的第一个对象的东西.

ember.js ember-model

2
推荐指数
1
解决办法
4834
查看次数