在最近的一次emberjs聚会中了解到我对ember-cli的好奇心.
据我所知,ember-cli是用ember-starter-kit生长出来的.从那时起,ember-starter-kit最近被弃用,转而使用ember-cli.
我已经使用grunt/yeoman超过10个月了.由于它的插件生态系统,我越来越喜欢它了.
另一方面,使用Ember-cli和grunt&yeoman有什么好处?或者有任何优势吗?
ember-cli能达到什么样的咕噜/自耕不能?
我在Mac上,只是使用npm安装了ember cli,我认为它可以开箱即用.这是服务器输出:
version: 0.1.4
Could not find watchman, falling back to NodeWatcher for file system events
Livereload server on port 35729
Serving on http://0.0.0.0:4200/
Build successful - 2456ms.
Slowest Trees | Total
-------------------------------+----------------
EsnextFilter | 877ms
TreeMerger | 380ms
Concat | 375ms
JSHint - Tests | 178ms
EsnextFilter | 146ms
ES6Concatenator | 135ms
Run Code Online (Sandbox Code Playgroud) 是否可以在emberjs中过滤多个值?
我试图用不同的过滤变量过滤表中的项目,并且我在使用多个变量时遇到了麻烦.
任何人都可以帮忙吗?我很喜欢emberjs并渴望学习.提前致谢.
做ember -v只显示ember cli版本.
如何查看ember.js版本和ember数据版本?
眼镜:
我有
import Alias from "../../../services/alias";
....
moduleFor("controller:test", "Controller: test", {
integration: true,
beforeEach: function() {
this.register('service:alias', Alias, {singleton: true});
this.inject.service('alias', { as: 'alias' });
this.advanceReadiness();
},
});
...
test('Alias Alias Alias ', function(assert) {
var controller = this.subject();
//sample function
controller.send("test");
assert.equal(true, controller.alias.get("alias"), "alias should be true");
});Run Code Online (Sandbox Code Playgroud)
我试图初始化服务,但在Ember Qunit测试期间,控制器没有注入服务.
我已经尝试将注入放入:init()而不是beforeEach,也不起作用......
如何在单元测试期间注入它?
我在调试器中放置断点以查看我的控制器是否具有该服务,在测试期间它没有.然而,在普通的余烬服务上这很好.
我正在学习Ember,经过一些基本测试后,我尝试连接我的API来创建搜索组件.
API'application/vnd.api + json'
{
"data": [
{
"expediente": "1717801",
"fecha_de_presentacion": "01/02/2016 12:00:00 AM",
"figura_juridica": "REGISTRO DE MARCA",
"logotipo": null,
"signo": "IGUY",
"tipo": "NOMINATIVA",
"titular": "SAMSONITE IP HOLDINGS S.\u00c0.R.L."
},
{
"expediente": "1717793",
"fecha_de_presentacion": "01/02/2016 12:00:00 AM",
"figura_juridica": "REGISTRO DE MARCA",
"logotipo": "1_files/direct_151.gif",
"signo": "URGOSTART",
"tipo": "MIXTA",
"titular": "HCP HEALTHCARE ASIA PTE. LTD"
},
{
"expediente": "1717780",
"fecha_de_presentacion": "02/02/2016 12:00:00 AM",
"figura_juridica": "REGISTRO DE MARCA",
"logotipo": null,
"signo": "SKALAR",
"tipo": "NOMINATIVA",
"titular": "SKALAR HOLDING B.V."
},
{
"expediente": "1717811",
"fecha_de_presentacion": …Run Code Online (Sandbox Code Playgroud) 我在Ember CLI网站上看到了以下代码:
export default Ember.Helper.helper(function([value]) {
return value.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)
令我困惑的是value参数周围的方括号.我可以在函数调用中理解它,但为什么在函数定义中呢?
我的Ember应用程序有一个包含2个不同组件的路由和一个带有index.hbs模板的控制器.
这是它的样子:
1)用户可以从过滤器组件的下拉列表中选择多个过滤器
2) DataGrid是与过滤器分开的组件
3)用户可以通过复选框从DataGrid中选择多行
4)创建自定义报告按钮将"sendAction"激活到路径的控制器
这些数据不是特定于模型的...它只是我可以制作自定义报告之前所需的临时数据.
Ember最佳实践是"Data Down/Actions Up",根据我的阅读,您不应该尝试从控制器访问组件.
但问题是,控制器中的createCustomReport方法需要访问在filter-component中选择的所有过滤器以及在grid-component中检查的所有行.
我的第一直觉是在组件本身上设置属性 - 让它保持自己的状态 - 然后从控制器获取对组件的引用,以便在将其传递给报告函数之前获取其状态.
但显然这是禁忌.
这是我目前的解决方案:
每次选择过滤器时,都会有一个sendAction从组件冒泡到控制器,并在控制器上设置自定义属性.
此外,每次从网格中选择一个复选框时,另一个sendAction将转到组件,然后冒泡到控制器并在控制器上为选定的网格行设置自定义属性.
然后,当我单击"createCustomReport"时,在控制器中触发的方法可以访问我之前设置的属性 - 因为它们现在都在控制器上.
所以它看起来像这样:
import Ember from 'ember';
export default Ember.Controller.extend({
myFirstFilter: undefined,
mySecondFilter: undefined,
actions: {
createCustomReport() {
// do something with all those component properties you've been setting
},
// These are triggered by the sendAction on the respective component
firstFilterMethod(myProperty1) {
this.set('myFirstFilter', myProperty1.name);
},
secondFilterMethod(myProperty2) {
this.set('mySecondFilter', myProperty2.name);
},
... …Run Code Online (Sandbox Code Playgroud) 在尝试在生产中构建一个ember应用程序时,我已经有两个星期的错误了.在开发环境中构建它工作正常.我还意识到在ember-cli-build中禁用minifyJs会阻止错误,但是然后,应用程序在浏览器中加载时会停滞不前,而在控制台中,我看到另一个错误:"无法导入ember-resolver".
我的猜测是,这是因为UglifyWriter不了解某些代码.
完整的错误是:
构建失败.文件:assets/vendor.js(95443:4)Broccoli插件:[UglifyWriter]失败:新JS_Parse_Error错误(eval at(/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1 :1),:1545:18)
at js_error (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:1553:11)
at croak (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2092:9)
at token_error (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2100:9)
at unexpected (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2106:9)
at semicolon (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2126:56)
at simple_statement (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2317:73)
at eval (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2186:19)
at eval (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2139:24)
at block_ (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2432:20)
Run Code Online (Sandbox Code Playgroud)
西兰花插件在以下地址实例化:UglifyWriter.Plugin(/home/larisoft/frontend/node_modules/broccoli-plugin/index.js:7:31)
at new UglifyWriter (/home/larisoft/frontend/node_modules/broccoli-uglify-sourcemap/index.js:25:10)
at UglifyWriter (/home/larisoft/frontend/node_modules/broccoli-uglify-sourcemap/index.js:20:12)
at Class.postprocessTree (/home/larisoft/frontend/node_modules/ember-cli-uglify/index.js:15:50) …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照ember-cli.com上的"入门"部分进行操作,但在尝试"ember serve"时遇到错误:
version: 0.1.6
Could not find watchman, falling back to NodeWatcher for file system events
Livereload server on port 35729
Serving on http://0.0.0.0:4200/
File: project/app.js
false == true
AssertionError: false == true
at Visitor.PVp.visitWithoutReset (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/esnext/node_modules/recast/node_modules/ast-types/lib/path-visitor.js:135:12)
at Visitor.PVp.visit (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/esnext/node_modules/recast/node_modules/ast-types/lib/path-visitor.js:117:21)
at Function.transform (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/esnext/node_modules/regenerator/lib/visit.js:31:18)
at transform (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/esnext/lib/index.js:86:23)
at compile (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/esnext/lib/index.js:33:9)
at EsnextFilter.processString (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/index.js:41:16)
at EsnextFilter.Filter.processFile (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/broccoli-filter/index.js:136:31)
at Promise.resolve.then.catch.err.file (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/broccoli-filter/index.js:82:21)
at $$$internal$$tryCatch (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/broccoli-filter/node_modules/rsvp/dist/rsvp.js:490:16)
at $$$internal$$invokeCallback (/Users/tiagomatos/Desktop/project/node_modules/ember-cli-esnext/node_modules/broccoli-esnext/node_modules/broccoli-filter/node_modules/rsvp/dist/rsvp.js:502:17)
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到有同样问题的其他人,所以我有点迷茫.关于可能导致这种情况的任何想法?
额外背景:
操作系统:OS X Yosemite
$ node -v
v0.10.35
$ npm -v
2.1.18
Run Code Online (Sandbox Code Playgroud) ember-cli ×10
ember.js ×9
javascript ×4
ember-data ×2
filter ×1
flask ×1
livereload ×1
qunit ×1
uglifyjs ×1
unit-testing ×1