标签: ember-data

Ember-Data:"映射"如何工作

我正在尝试将一些东西与ember + emberdata + router + asp.net web api放在一起.大多数它似乎工作,但我陷入了一个错误消息,当ember-data尝试findAll通过适配器为我的模型时我得到.

在我的后端,我有一个这样的模型(C#):

public class Genre {
    [Key]
    public int Id { get; set; }
    [Required]
    [StringLength(50, MinimumLength=3)]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我使用ember-data代表它:

App.Genre = DS.Model.extend({
    id: DS.attr("number"),
    name: DS.attr("string")
}).reopenClass({
    url: 'api/genre'
});
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用RESTAdapter定义了一个Store,如下所示:

App.store = DS.Store.create({
    revision: 4,
    adapter: DS.RESTAdapter.create({
        bulkCommit: false
    })
});
Run Code Online (Sandbox Code Playgroud)

商店在我的控制器中使用如下:

App.GenreController = Ember.ArrayController.extend({
    content: App.store.findAll(App.Genre),
    selectedGenre: null
});
Run Code Online (Sandbox Code Playgroud)

路由器定义为

App.router = Em.Router.create({
    enableLogging: true,
    location: 'hash',
    root: Ember.Route.extend({
        //...

        genre: …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js asp.net-web-api ember-data ember-old-router

11
推荐指数
2
解决办法
8098
查看次数

emberjs处理401未经授权

我正在构建一个ember.js应用程序,我挂了认证.json休息后端是rails.每个请求都使用会话cookie(warden)进行身份验证.

当用户首次导航到应用程序根轨道重定向到登录页面时.会话授权后,将加载ember.js应用程序.加载后,ember.js应用程序使用ember-data RESTadapter和会话进行授权,向后端发出请求.

问题是会话将在预定的时间后过期.很多时候,当发生这种情况时,仍然会加载ember.js应用程序.因此,对后端的所有请求都会返回401 {not autorized}响应.

为了解决这个问题,我认为每次从服务器返回401 {not autorized}响应时,ember.js应用程序都需要通过登录模式通知用户.

有谁知道如何监听401 {not autorized}响应并允许用户重新登录而不会丢失任何更改或状态.

我见过其他方法,如令牌授权,但我担心安全问题.

有人有解决这个问题的工作方法吗?

ember.js ember-data rails-api

11
推荐指数
2
解决办法
3437
查看次数

Ember.js ember-data restadapter无法加载json

干杯! 我有ember-data商店:

TravelClient.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({ bulkCommit: false, url: "http://someIP:somePORT"})
});
Run Code Online (Sandbox Code Playgroud)

和路由器:

TravelClient.ToursRoute = Ember.Route.extend({
  model: function() {
    return TravelClient.Tour.find();
  }
});
Run Code Online (Sandbox Code Playgroud)

我从远程服务器接收这个JSON:

{
  "tours": [
    {
      "id": "5110e8b5a8fefe71e0000197",
      "title": "qui deserunt dolores",
      "description": "Id velit nihil.",
      "seats": 12,
      "options": [

      ],
      "images": [
        {
          "id": "5110e8b5a8fefe71e0000196",
          "url": "url"
        }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试return TravelClient.Tour.find()失败的时候:

http://someIP:somePORT/tours 404 (Not Found)

XMLHttpRequest cannot load http://someIP:somePORT/tours. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

看起来RESTAdapter似乎不知道它必须接收JSON还是什么?

更新:

在rails服务器端的应用程序控制器中:

def set_access_control_headers
  headers['Access-Control-Allow-Origin'] = …
Run Code Online (Sandbox Code Playgroud)

javascript json ember.js ember-data

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

使用ember-data删除关联的模型

我有两个型号:

App.User = DS.Model.create({
  comments: DS.hasMany('App.Comment')
});

App.Comment = DS.Model.create({
  user: DS.belongsTo('App.User')
});
Run Code Online (Sandbox Code Playgroud)

当用户被删除时,它也会删除后端的所有注释,因此我应该从客户端身份映射中删除它们.

我在其他地方列出了系统上的所有注释,因此在删除用户之后它就会崩溃.

有没有办法指定这种对关联的依赖?谢谢!

ember.js ember-data

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

从ember数据存储中手动删除记录

我在我的应用程序中使用ember和ember数据.我们如何从Ember中的商店中手动删除记录.目前我正在使用push方法将记录推送到商店.我有一些ember数据保存的问题,所以我用ajax函数进行保存.有没有像record.remove()这样的方法?

ember.js ember-data

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

如何使用qunit在Ember单元测试中依赖商店作为服务?

根据博客文章ember-data版本1.0.0-beta.16,商店现在可以用作服务:

TweetComposerComponent = Ember.Component.extend({
  store: Ember.inject.service()      
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何qunit对这样的组件进行单元测试.我尝试过以下方法:

moduleForComponent('tweet-composer', {
  needs: ['service:store']
});
Run Code Online (Sandbox Code Playgroud)

和:

moduleForComponent('tweet-composer', {
  needs: ['store:main']
});
Run Code Online (Sandbox Code Playgroud)

当我做前者时,我得到一个错误Attempting to register an unknown factory: 'service:store',如果我做后者那么store就是undefined.

思考?

(我正在写一个ember-cli样式应用程序).

更新:

在ember-test-helpers repo中似乎存在一个未解决的问题.

在我等待这个修复的同时,我制作了一个可以作为一种间隙测量的辅助工具(coffeescript):

`import TestModuleForComponent from 'ember-test-helpers/test-module-for-component'`
`import { createModule } from 'ember-qunit/qunit-module'`

# This assumes the last argument, the callbacks, is present, although it
# does support the description being an optional …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli ember-qunit

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

如何在不使用阵列控制器的情况下在Ember模型中实现排序?

每个google结果都与ArrayController排序有关.需要一个排序机制而不使用ArrayController.

有一个模型,其中有排序参数.就像说'sortOrder'作为模型中的一个属性(它将来自后端).

将使用#each渲染此模型,但这应该基于sortOrder属性而不是模型的ID属性进行迭代.

ember.js ember-data ember-cli

11
推荐指数
2
解决办法
9558
查看次数

Emberjs带有Java REST后端

我正在研究Java(可能是Scala)的项目,它将使用Ember和ember-data.我知道我可以编写一个后端来格式化JSON,但我想知道是否有任何Java Java包能够以更有效地利用DS.RESTAdapter的格式构建JSON字符串而不构建完全自定义的东西?

类似于Rails Active Model Serializers的东西是理想的,或者是Ember的JSON序列化器和替代REST适配器.

在我需要从头开始构建东西之前,先问问你们.谢谢!

javascript java json ember.js ember-data

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

如何使用Ember Data 1.0.0-beta.1在控制台中查找模型?

App.User.find()现在是this.store.find(),那么如何从控制台到达那里?

ember.js ember-data

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

如何在一个路由中进行多个ajax调用?

我正在尝试从2个类别(新闻和事件)获得两个2个博客帖子列表,然后在我的主页的2个不同列中显示它们.我需要执行2个单独的Ajax调用来获取这些博客帖子.我不使用ember-data进行此操作,因为我没有看到在这种情况下使用它的优势(但我可能错了).

export default Ember.Route.extend({
  setupController(controller, model) {
    var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';

    Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
      controller.set('news', data.posts);
    });
    Ember.$.ajax({ url: wpUrl + 'events', dataType: "jsonp", type: 'GET' }).then(function (data) {
      controller.set('events', data.posts);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

上面的代码有效.但是从我在Ember纪录片中看到的内容来看,我应该将这些数据放在model钩子中(而不是setupController)以利用承诺.所以我尝试用这种方式重新编写代码:

export default Ember.Route.extend({
  model() {
    var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';

    return {
      news: function () {
        return Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
          return data.posts;
        })
      }, …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-data

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