标签: ember-cli

Ember测试:无法读取null的属性'createRecord'

似乎store在我的Ember测试中无法使用,无论是ObjectController在任何单元测试中还是在任何单元测试中.我的单元测试:

`import {test, moduleFor} from "ember-qunit"`
`import DS from "ember-data"`

moduleFor "controller:register", "RegisterController", {
}

test "store is working", ->
    expect 1
    controller = @subject()
    Ember.run(->
        sampleUser = controller.get("store").createRecord("user", {
            username: "myuser"
            password: "otherpassword"
        })
        ok(sampleUser instanceof DS.Model)
    )
Run Code Online (Sandbox Code Playgroud)

测试将给出:

死于试验#1试验(http://localhost:4200/assets/vendor.js:73539:13)在EVAL(应用程序/测试/单元/控制器/注册-test.js:19:5)在requireModule( http://localhost:4200/assets/vendor.js:54:29)在http://localhost:4200/assets/test-loader.js:14:29:无法读取属性'createRecord'空的

任何人都可以解释为什么我无法DS从我的测试中或控制器本身(运行测试时)访问功能?

unit-testing coffeescript ember.js ember-cli

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

无法再在 Windows 7 中本地运行我的 ember 应用程序

I did my first development in a Win7 machine, then switched to a Mac when I got that, which was great due to the speed of building with ember server running. I've been keeping everything in a Git repo. Everything works fine running ember server from my Mac.

Now, when I do a fresh clone from the repo on my Win7 computer, then do npm install and bower install (both of which complete fine), when I run ember server next, …

windows-7 ember.js ember-cli

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

Ember-CLI没有Ember Data,而是使用普通的ember对象

我使用Ember-CLI构建我的ember应用程序,但我不想使用Ember Data.

默认情况下,当您键入以下命令时:ember generate model Person,ember-cli将在名为"person.js"的模型下创建一个js文件,它将是一个DS.extend(...).我不想那样,我想要一个普通的余烬物.所以......我删除了person.js并手动创建了一个名为models.js的js文件(这就是我要声明所有ember对象的地方).

这是我在models.js中的内容:

import Ember from "ember";

App.Person = Ember.Object.extend({
  helloWorld: function() {
    alert("Hi, my name is " + this.get('name'));
  }
});
Run Code Online (Sandbox Code Playgroud)

我已经检查过"App"是否可用(在app.js中声明了一个名为App的应用程序 - 由EmberCLI生成 - 并且它被导出).

所以......现在......我想从我的路线中使用它.我有这样的东西(在"routes"下的一个名为person.js的js文件中):

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return App.Person.create({
      name: "Tom Dale"
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

嗯......它不起作用.控制台说:处理路由时出错:person.index App未定义ReferenceError:未定义App.

好的...我检查了生成的js文件(myproject.js):我发现了这个:

define('infoleccion2015/tests/models/models.jshint', function () {

  'use strict';

  module('JSHint - models');
  test('models/models.js should pass jshint', function() { 
    ok(false, 'models/models.js should pass jshint.\nmodels/models.js: line 3, col 1, \'App\' is not …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-cli

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

如何从控制器访问模型?

我似乎无法从控制器内部获取模型,即使控制器似乎设置了模型属性。下列:

export default Ember.ObjectController.extend({
    init: function() {
        this._super();
        console.log(this.get('model'));
        console.log(this.model);
        console.log(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来:

在此处输入图片说明

有任何想法吗?

ember.js ember-cli

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

在 Ember 中分离环境配置

我正在使用ember-cli来构建我的应用程序,它为我提供了一个很好的app.js文件,我可以在静态资产服务器上提供该文件。在部署时允许单独配置的最惯用的方法是什么?

例如,我可能会告诉我的app.js文件的使用者包含一个config.[js|json]将被加载的额外文件,并且该文件中的值将进入ENV对象......以便我可以将应用程序指向不同的 REST 端点,例如(QA、沙盒、预发布等)而无需重新编译。

我想一定有办法,我只是没有看到。我知道有config/environment.js文件,但它被编译到dist文件夹中。我正在寻找位于打包 JS 旁边的东西。我当然可以一起破解一些东西,所以我不是在寻找黑客。一个ember-cli-addon,也许?我认为必须有一种“余烬方式”来做到这一点。

我只是没有找到它:)

configuration ember.js ember-data ember-cli ember-cli-addons

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

在 ember-cli 的 ivy videojs 中获取 NaN 高度错误

我有一个像示例中的视频集: autoresize=true naturalWidth=1280 naturalHeight=720 这是实际大小,但出现以下错误。即使我取消尺寸并保留 autoresize=true 仍然会出现错误。

VIDEOJS:错误:为高度提供的值“NaN”不正确

任何人都可以帮忙吗?

video.js ember-cli

5
推荐指数
0
解决办法
285
查看次数

带有 Ember-CLI 的 UMD

我正在尝试通过 ember-cli 在我的 Ember 应用程序中加载gridstack。我通过安装应用程序bower并导入到我的ember-cli-build.js文件中。它_通过以下方式作为库包括:

if (typeof define === 'function' && define.amd) {
    define(['jquery', 'lodash'], factory);
}
Run Code Online (Sandbox Code Playgroud)

define.amd 评估为 false

我调查了为什么会这样,发现 ember-cli 的加载器不支持UMD. 在开放 cli问题上,主要 cli 开发人员之一 Stefan Penner 建议:

这是设计使然。因为这个库需要一个预构建步骤来对模块进行去匿名化。该步骤可以进行适当的修改以正常工作

我不知道这意味着什么。我通过ember-cli-build在这个库之前手动导入这个库的依赖项来解决这个问题,但这违背了依赖项管理的目的。我怎样才能让这个库解析它自己的模块?

javascript ember.js ember-cli

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

如何在验收测试中触发滚动事件

我需要触发窗口滚动事件来测试无限滚动,我尝试使用triggerEvent,但似乎我错过了一些东西并且它不起作用。我正在使用 Ember 2.0,如果重要的话,列表会在组件内部呈现。最后 2 个断言的测试失败,触发事件后滚动位置不会改变

test 'loads more items when scrolling', (assert) ->
  visit '/locations/1'   
  andThen ->
    assert.equal(find('.items-list li').length, 30)

    find(window).scrollTop(10000)
    triggerEvent(window, 'scroll')

    andThen ->
      assert.ok(find(window).scrollTop() > 0, 'window should scroll')
      assert.ok(find('.items-list li').length > 30, 'should load more items after reaching threshold')
Run Code Online (Sandbox Code Playgroud)

有没有人在他们的测试中成功触发滚动事件?

ember.js ember-cli

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

Ember.JS - 尝试反转记录集合时出现“TypeError: internalModel.getRecord 不是函数”

--使用 Ember 数据 2.7.1--

我试图颠倒记录集合的顺序,而无需先使用 toArray() 将它们转换为数组。这个对象集合来自 this.store.findAll('history-item') 返回的 promise。

我想以 ember 的方式做到这一点,而不是让它们成为普通的 javascript。我收到来自 record-array.js 的 TypeError: internalModel.getRecord。出于某种原因,当它尝试执行 objectAtContent() 时,它正在查看的内容似乎没有类型。通过堆栈跟踪,我可以看到我正在处理的对象是 [Class],类是历史项目模型。在 objectAtContent() 之前的一些堆栈调用,正在处理的对象从那个历史项目模型切换到其他没有类型属性的 Class 对象。

我能够使用 Ember Inspector 正确查看我的数据,如果我只是在我的模板上显示原始记录集合,它会正确显示。

有没有人遇到过这个?

一些想法和考虑:

- findAll() 如何使用它的承诺,因为它在后台重新加载而不允许逆转,这有什么特别之处吗?我确实希望它继续重新加载实时数据。

-我正在使用 ember-cli-mirage 来模拟我的数据库和端点,并且我已经按照我认为的信件中的说明进行操作。我将未配置的 JSONAPISerializer 用于海市蜃楼,并使用未配置的 JSONAPIAdapter 用于 ember。它与从后面发送的元数据有什么关系吗?它可能与未设置的模型或记录有关吗?我有什么特别的事情要做吗?

定义模型并尝试反转它的路由段:[注意:我知道在路由中准备数据(排序)可能不是惯例,但为了便于描述,我只是把它放在这里。我通常在控制器或组件的外部进行]

  model(){
    return this.get('store').findAll('history-item').then(function(items){
      return items.reverseObjects();
    }).catch(failure);
Run Code Online (Sandbox Code Playgroud)

历史列表模型声明:

  export default DS.Model.extend({
    question: DS.attr('string'),
    answer: DS.attr('string')
  });
Run Code Online (Sandbox Code Playgroud)

Ember-Cli-Mirage config.js 端点:

  this.get('/history-items', (schema) => {
     return schema.historyItems.all();
  });
Run Code Online (Sandbox Code Playgroud)

历史项目的 Ember-Cli-Mirage 固定装置:

  export default [
    {id: 1, question: "1is this working?", …
Run Code Online (Sandbox Code Playgroud)

promise ember.js ember-data ember-cli ember-cli-mirage

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

Ember:没有找到'user'的模型,并且在执行save promise时创建了Duplicate POST

更新:

有人可以帮忙吗?本周好一半,我一直在追求这个没有好运的事情.我注意到客户端正在生成两个POST.我已经为适配器添加了代码.还有其他我应该看的吗?

我正在浏览下面提供的视频教程,当我单击"提交"按钮将数据保存到数据库时,无法解决两个错误.

  1. 找不到'用户'的型号
  2. 正在生成两个POST.这会导致Assertion Failed错误,我怀疑这是因为从服务器返回的ID与前端的当前ID不匹配.

我看到数据库有两个新记录.当我再次单击提交按钮时,应用程序会将我带回到todo-items页面,其中显示了两个记录.谁能告诉我我做错了什么?

当前版本:

  • 恩伯:3.2.2
  • Ember数据:3.2.0
  • jQuery:3.3.1
  • Ember Simple Auth:1.7.0

视频教程(错误发生在11:30标记处):https://www.youtube.com/watch?v = bZ1D_aYGJnU.注意:该视频的作者似乎已经将重复的POST问题在视频结尾处消失了,但我看不出如何.

灰烬错误消息

组件/表格/ TODO项表格/ component.js

import Component from '@ember/component';

export default Component.extend({
    actions:{
        save(){
            this.get('submit')();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

组件/表格/ TODO项表格/ template.hbs

<form {{action "save" on="submit"}}>
{{input placeholder="description" value=todoItem.description}}
  <br />
  {{#if todoItem.validations.isValid}}
    <button type="submit">Add</button>
  {{else}}
    <button type="submit" disabled>Add</button>
  {{/if}}
</form>
Run Code Online (Sandbox Code Playgroud)

模板/ S/TODO项/ add.hbs

{{forms/todo-item-form
  todoItem=model
  submit=(route-action "submitAction") 
}}
{{outlet}}
Run Code Online (Sandbox Code Playgroud)

型号/待办事项,item.js

import DS from 'ember-data';

import { validator, buildValidations } from 'ember-cp-validations'; …
Run Code Online (Sandbox Code Playgroud)

javascript console ember.js ember-data ember-cli

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