标签: ember-data

Ember.js订单有很多孩子

我有一个项目模型,每个项目可以有很多项目.这可以是很多层次.

我有这个jsfiddle http://jsfiddle.net/rmossuk/xmcBf/3/

如何更改此项以便能够拥有多个级别的项目,以及如何循环显示每个级别以显示它们?

我还需要能够订购每个项目子项并将该命令存储到服务器.

请有人能告诉我你怎么做到这一点?

更新:

我现在已经设法实现了这个问题,可以在很多层面深入探讨这个问题,请看http://jsfiddle.net/rmossuk/fBmmS/3/

但我需要一种方式来说明每个项目的顺序,并按顺序显示它们.目前它只显示itemIds数组中的子项,但这只用于关联目的,我不能改变它重新排序可以吗?

有人知道怎么做吗 ?

非常感谢瑞克

javascript ember.js ember-data

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

如何从JSON响应中自动序列化和加载Ember Data对象?

我有一个UserSession模型定义如下:

App.UserSession = DS.Model.extend({
  authToken: attr('string'),
  firstName: attr('string'),
  lastName: attr('string')
});
Run Code Online (Sandbox Code Playgroud)

当用户登录时,我正在向后端发出AJAX POST请求,返回JSON表示,例如:

{
  "user_session": {
    "id": 1,
    "auth_token": "token_here",
    "first_name": "John",
    "last_name": "Doe"
  }
}
Run Code Online (Sandbox Code Playgroud)

现在通常,如果我要执行以下操作,Ember Data将负责自动序列化JSON并添加对象:

App.UserSession.find(<session-id>);
Run Code Online (Sandbox Code Playgroud)

当我正在进行手动AJAX调用时,是否有一种简单的方法可以将JSON返回到Ember数据存储对象中而无需手动反序列化?

编辑清晰:

以下不起作用,但我希望找到一些能够完成上述操作的功能,这些功能可能类似于下面的调用.

App.UserSession.load(<session-json>);
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

Ember数据:你如何渲染'hasMany'数据?

我在渲染模型的'hasMany'部分时遇到了麻烦.我似乎对这个人有类似的问题,但我仍然无法弄清楚该怎么做.

这是相关的JS:

    App.Router.map(function() {
        this.resource('account', function() {
            this.resource('transaction', {
                path: '/transaction/:transaction_id'
            });
        });
    });


    App.AccountIndexRoute = Ember.Route.extend({

        model: function() {
            return App.Account.find();
        }
    });

    App.TransactionRoute = Ember.Route.extend({

        model: function() {
            return App.Transaction.find();
        }
    });

    App.Store = DS.Store.extend({
        revision: 12,
        adapter: 'DS.FixtureAdapter'
    });

    App.Account = DS.Model.extend({
        title: DS.attr('string'),
        transactions: DS.hasMany('App.Transaction')
    });

    App.Account.FIXTURES = [
        {
            id: 1,
            title: 'Your account',
            transactions: [1, 2, 3]
        }];

   App.Transaction = DS.Model.extend({
        date: DS.attr('date'),
        name: DS.attr('string'),
        amount: DS.attr('number'),
        paidWith: DS.attr('string'),
        account: DS.belongsTo('App.Account')
    }); …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

Ember数据路由/映射到MySQL数据库

我一直在努力理解这个概念,而且我花了很多时间研究这个,但我已经无处可去了.

我在便宜的主机(one.com)上有一个MYSQL数据库.我在所说的数据库中创建了一个表,现在我希望我的Ember应用程序从中获取所有条目.

我该如何做到这一点?据我了解,ember-data尝试从特定项URL获取信息..但是如何使用相应的URL映射我的数据库条目?

我不能直接在服务器上安装任何软件,因为我没有它.但是支持PHP.使用PHP我可以轻松检索所有数据库条目并使用ember-data请求的正确格式将它们编码为JSON,但我不知道下一步该做什么.

www.myurl.com/blog/js/app.js

App = Ember.Application.create();

// data storage -----------------------------------------------------

App.Store = DS.Store.extend({
    revision: 12,
        adapter: DS.RESTAdapter.create({
            url: 'http://www.myurl.com/blog'
        })

});

// routers, routes --------------------------------------------------

App.Router.map(function() {
    this.resource('contact');
    this.resource('items', { path: "/items/" });
    this.resource('item', { path: "/items/:item_id"});
    this.resource('hearts');
    this.resource('tags');
});

App.IndexRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('items');
    }
});

App.ItemsRoute = Ember.Route.extend({
    model: function() {
        return App.Item.find();
    }
});

App.ItemRoute = Ember.Route.extend({
    model: function(params) {
        return App.Item.find(params.item_id);
    }
});

// controllers --------------------------------------------------------

App.ItemsController = Ember.ArrayController.extend({
    // ...
}); …
Run Code Online (Sandbox Code Playgroud)

mysql routing json ember.js ember-data

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

更新emberjs后发生路由错误

我尝试将我的应用程序emberjs版本从1.0.0 rc8更新为1.0.0但我得到路由错误.在我的应用程序路由我有这些代码:

OlapApp.ApplicationRoute = Ember.Route.extend({
    setupController: function (controller, model) {
        this.controllerFor('column').set('model', OlapApp.AxisModel.find());
       this.controllerFor('row').set('model', OlapApp.AxisModel.find());
   },
   renderTemplate: function (controller, context) {
      this._super(controller, context);
      this.render('application');
      this.render('column', {
        into: 'application',
        outlet: 'column',
        controller: 'column'
    });
    this.render('row', {
        into: 'application',
        outlet: 'row',
        controller: 'row'
    });
},
  dimenssionTree: function () {
    return OlapApp.MeModel.find();
}
});
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

DEPRECATION: Action handlers contained in an `events` object are deprecated in favor of          putting them in an `actions` object (error on <OlapApp.ApplicationRoute:ember314>)
    at Object.triggerEvent (file:///F:/OLAP/app/lib/ember.js:30519:13)
    at trigger (file:///F:/OLAP/app/lib/ember.js:29641:16)
    at …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

编辑API端点的RESTAdapter URL

我有一个api端点,需要/在它的末尾,但Ember不添加/.有没有办法编辑RESTAdapter创建的URL,以便添加此斜杠?

目前URL ember发送的是 http://www.myapi.com/v1/roles

我需要URL看起来像这样: http://www.myapi.com/v1/roles/

这是我目前的ApplicationAdapter:

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  ajaxError: function() {
    console.log('error');
  },

  host: 'http://www.myapi.com',

  namespace: 'v1'

});
Run Code Online (Sandbox Code Playgroud)

这是我的路由器:

import Ember from 'ember';

export default Ember.Route.extend({
    model: function(params) {
    return this.store.find('role');
  }

});
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-data

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

Ember DS.Store.findAll()返回空集合

嘿,我需要修改一些从DataStore获取的记录.如果我在路由器中添加以下代码,我可以看到请求传递给我的模板,但我无法修改集合的每个请求,因为集合是空的.

model() {
  return this.store.findAll('user').then(function(users) {
    console.log(users.get('length')); // 0
    return users;
  });
}
Run Code Online (Sandbox Code Playgroud)

我认为当从服务器获取所有记录时,promise会得到解决,但事实并非如此.或者我完全错过了什么.

我还尝试使用相同的结果修改afterModel回调中的模型.

我正在使用Ember 1.13.0(使用Ember-CLI),Ember-Data 1.13.4和ember-cli-mirage来模拟我的HTTP请求.

更新: 我设法为此问题创建了一个解决方法.在我的控制器中,我创建了一个新属性,它监听模型.@ each然后我能够修改模型并将其传递给视图.

export default Ember.Controller.extend({
  users: function() {
    return this.get('model.users').filter(function(user) {
      // The Promise is resolved twice
      // The first time with an empty model and the second time with 
      // the actual data. So I filter the empty model. 
      return user.get('id');
    }).map(function(user) {
      // do fancy stuff with our user
      return user
    });
  }.property('model.@each')
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli-mirage

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

手动序列化余烬数据模型

我有一个使用EmbeddedRecordsMixin的余烬数据模型。

使用model.save()正确序列化包括嵌入式记录在内的有效负载。

我需要将模型手动序列化为javascript对象。我该怎么做呢?

ember.js ember-data

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

EmberJs在保存后不会更新记录

当我创建一个记录const myRecord = this.store.createRecord('myType', myObject),然后myRecord.save()请求通过适配器发送到服务器.数据已成功保存,服务器将所有数据返回给客户端.它通过序列化器返回,通过normalize()钩子.

问题是Ember不会myRecord使用从服务器返回的属性更新对象,例如idversion...

当我刷新页面时,所有属性都在那里(当然).

我有更新记录的类似问题.我的应用程序中的每条记录都有一个版本属性,由服务器检查.每次保存时都会增加版本.这是为了数据安全.问题是,当我尝试多次更新记录时,只有第一次尝试成功.原因是version请求从服务器返回后未更新.(是的,服务器返回更新版本)

这对我来说是一个令人惊讶的行为,在我看来,这似乎是这里建议的预期功能 - https://github.com/ebryn/ember-model/issues/265.(但该帖子是从2013年开始的,建议的解决方案对我不起作用).

有任何想法吗?

对于completenes,这是相关代码(简化和重命名)

基于myModel

export default Ember.Model.extend({
    typedId: attr('string') // this serves as an ID
    version: attr('string'), 
    name: attr('string'),
    markup: attr('number'), 
});
Run Code Online (Sandbox Code Playgroud)

myAdapter

RESTAdapter.extend({
    createRecord(store, type, snapshot) {
        // call to serializer
        const serializedData = this.serialize(snapshot, options);

        const url = 'http://some_internal_api_url';
        // this returns a promise
        const result =  this.ajax(url, 'POST', serializedData);

        return result;
    }, …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

Ember操作在组件内部完成后如何重定向

所以我是Ember的新手(使用ember-cli 3.0.4),并试图了解如何对我做什么是正常的事情.我在组件内部有一个表单,用户更新信息,然后单击"保存".我已经构建了一个动作,组件在单击"保存"按钮时调用该动作,并且该动作在模型对象上调用save().到现在为止还挺好.

我的问题是,当save()promise完成时,我想重定向到另一个页面.我无法弄清楚如何做到这一点.动作的emberjs指南并没有提到重定向,只有路由模块似乎提到了重定向.

显然,有一种"苦恼"的做事方式,我还不知道,但到目前为止,我无法弄清楚那是什么.在Ember中保存完成之后,简单的重定向如何?

组件代码:

export default Component.extend({
actions: {
    saveCountry() {
        var self = this;
        if (this.country.get('hasDirtyAttributes')) {
            this.country.save().then(
                //???
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

路线代码:

export default Route.extend({
    model(params) {
       return this.get('store').findRecord('country', params.country_id);
    }
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

ember.js ember-data ember-cli

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