标签: ember-data

当ember-data接收http状态401时,Ember.js应用程序应重定向到登录

我希望我的Emberjs应用程序处理HTTP状态未授权(401).

该应用程序使用ember-data集成JSON API(Rails).

当接收HTTP状态未授权时,客户端层(Emberjs)应该重定向到提示登录的Emberjs视图/模板(401).

我怎样才能在整个应用程序中执行此操作?

login ember.js ember-data

5
推荐指数
2
解决办法
2792
查看次数

Ember.js:如何从App对象访问商店

从Ember.Data 1.0 Beta开始,我们必须使用store.find('model')而不是App.Model.find().如何访问App对象中的商店对象?

var App = Ember.Application.create({
  auth: function() {
    return new Ember.RSVP.Promise(function(resolve, reject) {
      // ... get token somehow ...
      // how to get store?
      this.store.find('user').then(function(users) {
        App.set('user', users.get('firstObject');
        resolve();
      }, function(err) {
        reject();  
      });
    });
  }
});

App.deferReadiness();
App.auth().then(App.advanceReadiness());
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

5
推荐指数
2
解决办法
2833
查看次数

Ember.js有很多复选框列表

我有以下两种型号:

App.Child = DS.Model.extend({
    name: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

和:

App.Activity = DS.Model.extend({
    children: DS.hasMany('child',{async:true}),
    name: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

我想使用复选框在hasMany关系中在现有子节点之间进行选择.

例如,我有这三个孩子:

App.Child.FIXTURES = [
  { id: 1, name: 'Brian' },
  { id: 2, name: 'Michael' },
  { id: 3, name: 'James' }
];
Run Code Online (Sandbox Code Playgroud)

用户应该能够在创建或编辑活动时使用复选框,以选择要添加到hasMany关系的子项.

我创建了一个JSFiddle来说明我的问题:http://jsfiddle.net/Dd6Wh/.点击"创建新活动"以查看我正在尝试执行的操作.

基本上它与Ember.Select [...] multiple ="true"相同,但是对于复选框.

对于像Ember.js这样的事情,正确的方法是什么?

javascript ember.js ember-data

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

Ember Model Object hasMany不会像我期望的那样返回数组

我正在尝试使用Ember Data的hasMany字段来返回一个数组,并将数组中的项计数作为计算属性.但是,当我执行以下操作时,它会返回一个对象(由于{async:true}似乎是一个promise)?而不是我期望的数组.

App.Shift = DS.Model.extend({
  name: DS.attr('string'),
  people: DS.hasMany('person', {async: true});
  number_of_people: (function(){
    this.get('people').length
  }).property('people')
)};

App.Person = DS.Model.extend({
  first_name: DS.attr('string'),
  last_name: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

更新:我想回报人的长度.我试过这个但是当我访问该属性时,我得到了仍然返回的promise对象,而不是当时返回的完成promise的值.如何获得承诺返回的评估值?

number_of_people: (function(){
  return this.get('people').then(function(people){
    return people.get('length');
  });
})
Run Code Online (Sandbox Code Playgroud)

javascript arrays ember.js ember-data

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

Ember.js - 保存记录后如何清除表单数据?

我正在使用Ember App Kit.我有一个带有学生姓名的表单,我可以毫无问题地将数据保存到数据库中.问题是,每当我http://localhost:8000/#/students/new从另一个页面转换回此路径()时,数据(学生姓名)就会保留在表单上.如果我刷新屏幕,那么数据将被清除,我将获得一个新的表格.我究竟做错了什么?

此外,如果我决定不保存或添加记录并去查看学生列表,我会在屏幕上看到一个空记录.但该记录不在数据库中.我怎么能防止这种情况?

//--------------------------------------------
// Controller

var StudentsNewController = Ember.ObjectController.extend({
    init: function() {
        var newSystem = this.store.createRecord('student');
        this.set('newStudent', newStudent);
        this._super();
    },
    actions: {
        acceptChanges: function () {
            var self = this;
            self.get('newStudent').save().then(function(student){
                self.transitionToRoute('students');
            });
        }
    }
});

export default StudentsNewController;

//--------------------------------------------    
// Model

var Student = DS.Model.extend({
    name: DS.attr('string'),
    major: DS.belongsTo('major')

});

export default Student;

//--------------------------------------------    
// Template

    <form  {{action 'updateSystem' on="submit"}}>
        <fieldset>
                <div>
                    <label>Student Name</label>
                    {{input value=newStudent.name size="50"}}
                </div>
                <button {{action 'acceptChanges'}}>Add</button>
        </fieldset>
    </form>
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

加载路径时出错:TypeError:undefined不是函数

我真的希望来自emberjs团队的人能够读到这一点.

我是一位经验丰富的程序员,使用多种语言.

&AFA ember关注的是,它不是学习曲线,也不是缺乏知识和教程,而是我认为它的框架和开发环境的来源不断变化,消耗了大量的时间,精力和精力,试图当各种SO问题和谷歌引用框架的不同/旧版本时,弄清楚出了什么问题.

我发现需要某种配置图表,其中包含什么以及如何配置您的开发环境是必要的.

有很多答案并不一定指向正确的方向,很难描述,但我觉得文档在框架向前运行时落后了.

我浏览了所有JoséMota的精彩教程,在构建实际书签应用程序的最后阶段,我遇到了很多问题,学习emberjs不是主要问题,而是大部分时间消耗的基础设施.

它从ruby版本开始,在ubuntu 12.04上管理这些,ruby的ember-data依赖项(仅用ruby 1.9编译),localstorage_adapter.js以及如何在ember中使用它... github页面上给出的示例不起作用.

配置:
ubuntu 12.04.4 ember 1.4.1 + pre.af87bd20 jquery-1.9.1 handlebars-v1.3.0 ember-data 1.0.0-beta.7.f87cba88 ruby​​ 1.9.2p290

何塞·莫塔的伟大tutsplus当然 因此,这里是我的问题:

Error while loading route: TypeError: undefined is not a function
at App.BookmarksNewRoute.Ember.Route.extend.model (http://localhost:8000/js/app/routes/bookmarks_new.js:3:23)
at superWrapper [as model] (http://localhost:8000/js/vendor/ember.js:1239:16)
Run Code Online (Sandbox Code Playgroud)

应用程序代码(我会尽量明确):

路线

filename:bookmarks_new.js

App.BookmarksNewRoute = Ember.Route.extend({
model: function() {
    return App.Bookmark.createRecord();
}
Run Code Online (Sandbox Code Playgroud)

})

楷模

filename:bookmark.js

App.Bookmark = DS.Model.extend({
title: DS.attr("string"),
url: DS.attr("string")
Run Code Online (Sandbox Code Playgroud)

})

filename:router.js

App.Router.map(function () {
    this.resource("bookmarks", function(){ …
Run Code Online (Sandbox Code Playgroud)

ruby local-storage ember.js ember-data ubuntu-12.04

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

如何使Ember数据根据其规则停止将我的端点更改为单数和复数?

我需要Ember在调用REST端点时停止尝试猜测,但找不到这样做的方法.

如果我有一个端点说,/services我想要总是打电话给/services我,无论我是打电话find('services')还是打电话find('services', 1)

单面相同.

是否可以禁用此行为?即使我必须覆盖REStAdapter中的方法也没问题.

谢谢!

javascript rest web ember.js ember-data

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

获取hasMany关系的长度而不触发获取

模型:

DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  comments: DS.hasMany('comment', { async: true} ),

  hasComments: Ember.computed.gt('comments.length', 0)
});
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{ 
  "id": "abcdefg",
  "title": "some cats are cool",
  "body": "",
  "comments: ["100", "101", "102"]
}
Run Code Online (Sandbox Code Playgroud)

但是hasComments计算属性会单独触发每个注释的提取.我不希望这样:D

我知道这有效(避免了获取),但进入私有API:

hasComments: Ember.computed.gt('data.comments.length', 0)

ember.js 1.8.1

ember-data 1.0.0-beta.11

关于根据长度实现计算属性的任何其他建议

ember.js ember-data

5
推荐指数
2
解决办法
1107
查看次数

Ember-data 1.0.0-beta.19:store.find()返回DS.INTERNALMODEL实例

我已将Ember-data更新为1.0.0-beta.19,现在store.find('events')解决了promise返回DS.INTERNALMODEL实例,而不是DS.MODEL.使用Ember-data 1.0.0-beta.18它运行正常.有任何想法吗?

UPDATE

最后,我发现我的应用程序代码中的某个地方使用的是Ember数据内部代码store.find('events.content'),导致异常.调试器没有那么有用的跟踪它,但删除这个修复了我的问题.

ember-data

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

如何保存Ember Data记录而不提交到后端?

因此,Ember数据模型具有在不将其提交到后端deleteRecord()destroyRecord()情况下执行的功能。

我该怎么做save(),而不将其提交到后台?

我需要它的原因是,我正在使用自定义服务在一个请求中批量保存多个不同类型(模型)的记录。我已成功发送请求,并且记录保留在后端。

但是由于请求没有通过Ember Data管道,因此除非我手动处理,否则服务器的响应将被丢弃。

基本上,我在服务中有此功能:

// Accepts an array of records of mixed types,
// both existing and new
batchSave (records) {             

  this
    .customAjax(records)          // The records are persisted
    .then(payload => {            // Response from the backend with updated records
      store.pushPayload(payload); // Now all records have been updated with their current state

      // Now all the records are in their current state.
      // But they are still dirty!
      // How do I mark …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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