标签: ember-data

使用emberjs选择视图填充选择框

我正在制作一个玩具应用程序来学习余烬.我有属于风格的食谱.样式只包含name属性(以及隐式id).我在新模板中设置选择字段时遇到问题,无法选择配方的样式.

这是我目前的路线,控制器和模板:

路线:

App.RecipesNewRoute = Ember.Route.extend({
  model: function() {
    return App.Recipe.createRecord({
      title: '',
      description: '',
      instructions: ''
    });
  },
  setupController: function(controller, model) {
    controller.set('content', model);
  }
});
Run Code Online (Sandbox Code Playgroud)

控制器:

App.RecipesController = Ember.ArrayController.extend({});

App.RecipesNewController = Ember.ObjectController.extend({
  create: function() {
    this.transitionToRoute('recipes.show', this.content);
  },

  cancel: function() {
    this.content.deleteRecord();
    this.transitionToRoute('recipes.index');
  },

  buttonTitle: 'Add Beer Recipe'
});
Run Code Online (Sandbox Code Playgroud)

模板:

食谱/新的和形式部分:

<script type="text/x-handlebars" data-template-name="recipes/new">
  {{ partial 'recipes/form' }}
</script>

<script type="text/x-handlebars" data-template-name="recipes/_form">
  {{ title }}
  <form>
    <fieldset>
      <div>
        <label {{bindAttr for="titleField.elementId"}}>Title</label>
        {{view Ember.TextField valueBinding='title' name='title' viewName='titleField'}}
      </div>
      <div> …
Run Code Online (Sandbox Code Playgroud)

javascript templates views ember.js ember-data

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

资源路径参数未传递给Route

不知何故,该参数user_id未传递给我的UserIndexRoute.怎么可能出错?

我得到的错误是

断言失败:您不能将undefinedid作为id 传递给商店的find方法

  • 请求是/ users/1
  • ID为1的用户确实存在于其模型夹具中
  • 我的应用程序中没有其他错误,用户路由正在运行并显示用户的fixturedata

router.js

var Router = Ember.Router.extend({
  location: DaappEmber2ENV.locationType
});

Router.map(function() {
  this.resource('users', function(){
    this.resource('user', { path:'/:user_id' }, function(){
        this.route('edit');
    });
    this.route('create');
  });
});
Run Code Online (Sandbox Code Playgroud)

导出默认路由器;

路由/用户/ index.js

export default Ember.Route.extend({
    model: function(params){
        Ember.Logger.debug('Params for user/index route:', params);
        return this.store.find('user', params.user_id);
    }
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli

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

来自承诺的计算财产

我有一个关系(很多)的余烬数据模型.所以有一个计算属性取决于关系元素.我需要根据关系属性的数据返回布尔值.

isAllowed: function(){
        return this.get('allowedUsers').then(function(data){
            var user = this.get('currentUser');
            return data.contains(user);
        }.bind(this));
}.property()
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,isAllowed是计算属性并且allowedUsersuser模型有许多关系async并被设置为true.isAllowed被设置为promise对象而不是返回布尔值.我甚至试图创建另一个承诺对象,如下面但没有运气.

 isAllowed: function(){
            return new Ember.RSVP.promise(function(resolve, reject){
               this.get('allowedUsers').then(function(data){
                var user = this.get('currentUser');
                 resolve(data.contains(user));
              }.bind(this));

            }.bind(this));
    }.property()
Run Code Online (Sandbox Code Playgroud)

如何确保将isAllowed设置为布尔值而不是promise对象?

ember.js ember-data

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

Ember-data 在第 3 级序列化/反序列化嵌入的记录

请原谅我提出了这个标题,但我真的不知道如何问这个,所以我只是解释一下。模型:组(有)用户(有)帖子定义为:

// models/group.js
name: DS.attr('string'),

// models/user.js
name: DS.attr('string'),
group: DS.belongsTo('group')

// models/post.js
name: DS.attr('string'),
user: DS.belongsTo('user'),
Run Code Online (Sandbox Code Playgroud)

当我请求时/posts,我的服务器返回这个嵌入的记录:

{
  "posts": [
    {
      "id": 1,
      "name": "Whitey",
      "user": {
        "id": 1,
        "name": "User 1",
        "group": 2
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

请注意,group没有组记录,而是有一个 id。

使用我的序列化程序:

// serializers/user.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        group: {embedded: 'always'}
    }
});

// serializers/post.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        user: {embedded: 'always'}
    }
});
Run Code Online (Sandbox Code Playgroud)

这期望UserPost模型在其中嵌入了记录。但是,它带来了一个问题,因为在 json 响应中没有嵌入的group …

ember.js ember-data

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

如何删除Ember.js中模型的hasMany关联中的所有记录

我有一个比赛模型,其中包含与之相关的一系列比赛.假设我想立刻销毁集合中的所有匹配项,应该怎么做?这是我尝试过的:

var matches = tournament.get('matches').toArray();
for (var i = 0; i < matches.length; i++) {
  matches[i].destroyRecord();
}
tournament.save().then(function(tournament) {
  that.transitionTo('tournaments.setup', tournament); 
});
Run Code Online (Sandbox Code Playgroud)

这个toArray位似乎不正确,但它会阻止修改迭代,因为我遍历它.似乎应该有一种方法可以立即销毁所有这些比赛,然后保存比赛.

ember.js ember-data

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

ember数据没有找到属性名称的模型

我已经定义了一个模型(app/models/job.js)

import DS from 'ember-data';

export default DS.Model.extend({
    status: DS.attr(),
    result: DS.attr()
});
Run Code Online (Sandbox Code Playgroud)

我试图从索引控制器(app/controllers/index.js)加载它

import Ember from 'ember';

export default Ember.Controller.extend({
    productName: "",
    customerName: "",
    startDate: "",
    endDate: "",
    actions: {
        search: function() {
            let data = this.store.find("job", '9e5ce869-89b3-4bfc-a70f-034593c21eae');
            return data;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我得到的HTTP响应是:

{
    "status": "OK",
    "result": {
        "b": 2,
        "a": 2,
        "see": 1,
        "c": 1
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么得到以下错误和警告:

WARNING: Encountered "status" in payload, but no model was found for model name "status" (resolved model name using next-gen-analytics@serializer:job:.modelNameFromPayloadKey("status")) …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

如何从另一个控制器访问另一个控制器的操作

我刚刚将我的Ember应用程序升级到最新版本,但在测试其功能时,某些操作无效.我之前在旧版本中运行良好的代码如下.

export default Ember.Controller.extend({
needs: 'sales-order',
actions: {
    showModal: function(mode){
        this.get('controllers.sales-order').send('showModal', mode);
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

看起来" 需求 "是折旧的.

ember.js ember-data ember-cli

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

如何在 emberjs 中使用 Mirage 假数据进行分页?

我正在使用海市蜃楼来创建虚假数据。

场景/default.js

export default function(server) {
  server.createList('product', 48);
  server.loadFixtures();
}
Run Code Online (Sandbox Code Playgroud)

上面我正在创建 48 个产品,我正在调用控制器

this.store.query('product', {
                filter: {
                    limit: 10,
                    offset: 0
                }
            }).then((result) => {
                console.log(result);
            });
Run Code Online (Sandbox Code Playgroud)

并在海市蜃楼/config.js

this.get('/products', function(db) {
    let products = db.products;
    return {
      data: products.map(attrs => ({
        type: 'product',
        id: attrs.id,
        attributes: attrs
      }))
    };
  });
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,如何每页加载 10 个产品?我将过滤器 10 作为页面大小发送,偏移量表示页码。

应该对 config.js 进行哪些更改以仅加载有限的产品?

javascript ember.js ember-data ember-cli-mirage

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

ember-data保存并找到postgrest

如果我们必须将ember-data及其save()和find()方法与postgrest样式的REST调用集成,那么ember-data本身就能理解json-api,我们需要在哪里进行更改?

我们是否需要在ember或某些服务器端逻辑中修改客户端,以便与ember-data要求进行映射.

因此,最后的REST api调用看起来像是从相关表格中获取电影及其标题和competition.name - >

http://localhost:3001/film?select=title,competition{name}
http://localhost:3001/users?select=email::text&id=eq.2&sign_in_count=eq.16
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data postgrest

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

有没有办法在慢速模式下运行 ember 验收测试用例?

我写了一些 ember 验收测试用例。问题是当我http://localhost:4200/tests通过 Acceptance访问 URL和过滤器模块时,测试用例运行速度快如闪电。即使这些是在async await函数中编写的。

我想使用 ember 运行循环run.laterrun.next. 但这不是解决方案。

有没有办法slow mode在应用程序顶部的某个地方添加(或)是否有任何已经存在的测试助手?所以我可以看到运行中的测试用例。

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

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