使用ember-cli生成项目MODEL_FACTORY_INJECTIONS时,默认情况下您将启用该项目.
但由于某种原因,它会破坏夹具装载:
适配器/应用
export default DS.FixtureAdapter.extend({});
Run Code Online (Sandbox Code Playgroud)
车型/笔记
var Note = DS.Model.extend({
text: DS.attr('string'),
});
Note.FIXTURES = [
{
id: 1,
text: 'text1'
},
];
export default Note;
Run Code Online (Sandbox Code Playgroud)
路线/指数
export default Ember.Route.extend({
model: function() {
return this.store.find('note');
}
});
Run Code Online (Sandbox Code Playgroud)
随着MODEL_FACTORY_INJECTIONS我得到
加载路径时出错:错误:断言失败:无法找到模型类型注释的固定装置@ model:注意:
没有一切按预期工作.
也许我错过了什么?或者这只是一个错误?
我正在使用ember-cli v0.0.47,我希望能够让brocolli在触发构建时忽略某些文件的更改.
我正在使用vim作为创作工具,并且我将其配置为在编辑器失去焦点时保存所有打开的文件(这包括交换和撤消文件).这有一个令人遗憾的副作用,导致我的ember-cli项目进行了大量不必要的重建,因为brocolli检测到文件已被更改并继续重建.
因此,我希望能够以某种方式告诉brocolli在某些文件被更改时不会触发项目的重建.有没有办法实现这个目标?
我正在尝试让我的应用程序/myroute/在应用程序加载时自动重定向到路由。我所做的是将以下内容添加到我的app / router / application.js中
app / routes / application.js
import Ember from 'ember';
export default Ember.Route.extend({
redirect: function() {
this.transitionTo('myroute');
}
});
Run Code Online (Sandbox Code Playgroud)
这有效,但是问题是我的URL不再起作用。
当我去http://host/#/myroute2它仍然去我的路线
正确的做法是什么?
我有一个在localhost:4200上运行的Ember Cli项目和一个在localhost:56967上运行的asp.net webapi项目.两个项目分别运行良好:我可以启动我的Ember应用程序并测试几条路线,看起来很好,我可以访问我的api(例如:api/products),我看到了我的回复.
我遇到的问题是彼此挂起两件事.
适配器
export default DS.RESTAdapter.extend({
host: 'http://localhost:56967',
namespace: 'api'
});
Run Code Online (Sandbox Code Playgroud)
我第一次遇到一些Cors问题,但是我在我的Ember应用程序中修复了contentSecurityPolicy,并在我的Api上启用了Cors.
当我进入产品路线时,我可以看到对Api的请求被接受,Api回复了Json的回答.但是,我没有序列化模型,所以我可以在我的Ember应用程序中使用它.
这是我对Api的回应
[{"ProductId":1,"Name":"Product 1","Description":"Category 1"},{"ProductId":2,"Name":"Product 2","Description":"Category 2"},{"ProductId":3,"Name":"Product 3","Description":"Category 3"}]
Run Code Online (Sandbox Code Playgroud)
产品的Ember模型
export default DS.Model.extend({
name : DS.attr('string'),
description: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)
Asp.net产品型号:
public class Product
{
public int ProductId { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我知道我必须序列化Api响应,使其成为我的Ember App的"可读"Json.现在的问题是:更改Api的格式是否更好?或者做一个好的序列化器?我如何制作序列化器?很难找到一些体面的教程.我尝试了这个,但这不起作用:
export default DS.RESTSerializer.extend({
primaryKey: 'productId'
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Error while processing route: products No model was found for …Run Code Online (Sandbox Code Playgroud) ember-cli为rails中的这些添加了类似的生成器,我想问一下这两个库/框架之间是否有任何区别.
来自我的controllers/cart.js的代码:
export default Ember.Controller.extend({
cartTotal: Ember.computed('model.@each.subTotal', function() {
return this.model.reduce(function(subTotal, product) {
var total = subTotal + product.get('subTotal');
return total;
}, 0);
})
)};
Run Code Online (Sandbox Code Playgroud)
此计算属性循环遍历模型中的所有元素,添加subTotal属性的所有值,返回a cart total.
购物车,test.js
import { moduleFor, test } from 'ember-qunit';
import Ember from 'ember';
moduleFor('controller:cart', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
test('it exists', function(assert) {
var controller = this.subject();
assert.ok(controller);
});
test('cartTotal function exists', function(assert) {
var controller = this.subject(); …Run Code Online (Sandbox Code Playgroud) 我有一个0.2.7版本的项目,并生成组件测试作为单元测试.我的新项目默认创建集成测试.有没有办法改变它?
当点击"编辑"触发动作"编辑":
{{#link-to "pages.show" page class="list-group-item"}}
{{page.name}}
<span class="badge" {{action "edit" page preventDefault=false}}>edit</span>
{{/link-to}}
Run Code Online (Sandbox Code Playgroud)
然后触发动作(例如打开编辑页面),但是在下一秒,链接到重定向完成,所以我最终在"pages.show"路线上.
预期:仅调用"编辑"操作,并且单击事件(?)不会"冒泡"到链接到帮助程序.
使用侧注 Ember 2.2,上面的模板是组件的一部分.
PS:我认为在一个动作中使用preventDefault = false会停止这种行为 - 但很明显,链接帮助器从其他地方获取信息.
我正在尝试升级项目的devDependencies并遇到此错误.我无法弄清楚为什么我会收到这个错误.它认为什么包无效?本身?我是否必须查看每个package.json?
[folatt@ArkOS_Dev genesis]$ sudo ember update
Invalid Version: *
TypeError: Invalid Version: *
at new SemVer (/home/folatt/workspace/arkos/genesis/node_modules/semver/semver.js:295:11)
at Range.test (/home/folatt/workspace/arkos/genesis/node_modules/semver/semver.js:1049:15)
at Function.satisfies (/home/folatt/workspace/arkos/genesis/node_modules/semver/semver.js:1098:16)
at Function.VersionChecker.satisfies (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/version-checker.js:31:17)
at Package.updateRequired (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/package.js:21:26)
at Package.init (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/package.js:15:27)
at new Package (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/package.js:4:13)
at EmberCLIDependencyChecker.<anonymous> (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/dependency-checker.js:126:12)
at Array.map (native)
at EmberCLIDependencyChecker.readDependencies (/home/folatt/workspace/arkos/genesis/node_modules/ember-cli-dependency-checker/lib/dependency-checker.js:122:36)
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"author": "arkOS",
"description": "Web management frontend for arkOS servers",
"devDependencies": {
"broccoli-asset-rev": "^2.4.6",
"broccoli-funnel": "^1.0.6",
"ember-ajax": "^2.0.1",
"ember-cli": "^2.7.0",
"ember-cli-app-version": "^1.0.0",
"ember-cli-babel": "^5.1.6",
"ember-cli-content-security-policy": "^0.5.0",
"ember-cli-dependency-checker": "^1.3.0",
"ember-cli-htmlbars": "^1.0.1",
"ember-cli-htmlbars-inline-precompile": "^0.3.1",
"ember-cli-ic-ajax": "0.2.5", …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的控制器创建一个基类,因此可以避免重复代码。
这里的问题是,每当我尝试使用它时,都会抛出错误。
“断言失败:您试图定义a
{{link-to "inventory"}},但未传递生成其动态分段所需的参数。找不到controllers/base-inventory从frontend/controllers/inventory” 导入的模块
为了创建我的基本控制器,我使用了ember cli,这就是我所做的:
ember g controller base-inventory
Run Code Online (Sandbox Code Playgroud)
然后
// base-inventory.js
const BaseInventory = Ember.Controller.extend({
//my code...
});
export default BaseInventory;
Run Code Online (Sandbox Code Playgroud)
在我想使用该基类的控制器中,执行了以下操作
import BaseInventory from 'controllers/base-inventory';
// also tried import { BaseInventory } from 'controllers/base-inventory';
// and export default new BaseInventory({});
export default BaseInventory.extend({
//more code here...
});
Run Code Online (Sandbox Code Playgroud)
有什么想法我做错了吗?
我不打算使用mixins,因为一开始它似乎并不是最好的选择。我不太确定mixin提供的共享内容。我认为这不是问题,因为我正在尝试在控制器中进行继承,但是正如我所说的,我不确定它的真正工作原理。
如果无法按照我想的方式做,我将编写一个mixin。
ember-cli ×10
ember.js ×10
ember-data ×2
json ×2
dependencies ×1
ember-qunit ×1
htmlbars ×1
javascript ×1
qunit ×1
unit-testing ×1
vim ×1