也许使用常规的Ember应用程序,将所有代码放在app.js中对我来说会更容易.但由于我使用的是Ember CLI,因此无法在我的路线中访问我的模型.我还在尝试学习如何使用Ember CLI,所以请帮帮我.
因为我只想激活AJAX调用并在我的UI上渲染数据,所以我下载并将Ember Model库添加到我的项目中.我认为不需要使用Ember Data.这是我所指的Ember Model文档:https://github.com/ebryn/ember-model#example-usage.话虽如此,这是Ember CLI提出的我的目录结构:
|-app
|-controllers
| |-customers.js
|-models
| |-customers.js
|-routes
| |-customers.js
|-templates
| |-customers.hbs
|-app.js
|-index.html
|-main.js
|-router.js
Run Code Online (Sandbox Code Playgroud)
这是我只关注问题的实际项目结构的更简单的表示.正如Ember Model文档中提出的,我将以下代码添加到我的Customers模型(model\customers.js)中:
export default Ember.Model.extend({
nameid: attr(),
firstname: attr(),
middlename: attr(),
lastname: attr(),
prefixname: attr(),
suffixname: attr()
});
this.url = "http://restapi/api/customers";
this.adapter = Ember.RESTAdapter.create();
Run Code Online (Sandbox Code Playgroud)
请注意,我必须执行"export default"而不是"App.Customers = Ember.Model.extend ...".这是Ember CLI惯例.因此,当我尝试访问我在Customers Route中创建的模型时,我收到错误"加载路径时出错:ReferenceError:App未定义"..
客户路线代码:
export default Ember.Route.extend({
model: function () {
App.Customers.find();
},
actions: {
addnew: function(){
//logic of saving edited customer
alert('customer …Run Code Online (Sandbox Code Playgroud) 我很难配置Ember CLI来使用uncss.设置:
> ember new foobar
> cd foobar
> bower install --save-dev bootstrap
> ember generate route index
Run Code Online (Sandbox Code Playgroud)
应用程序/模板/ index.hbs
<h1>Hello World!</h1>
Run Code Online (Sandbox Code Playgroud)
Brocfile.js
/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp();
app.import('vendor/bootstrap/dist/css/bootstrap.css');
module.exports = app.toTree();
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能使用https://github.com/sindresorhus/broccoli-uncss?http://iamstef.net/ember-cli/的资产部分说它很容易,但它没有描述如何实际做到这一点.
我有多个表示用户数据的模型(配置文件,设置等).目前这些都存储在models文件夹中,就像这样;
models
-> user.js
-> profile.js
-> settings.js
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的文件夹结构;
models
-> user.js
-> user (folder)
-> profile.js
-> settings.js
Run Code Online (Sandbox Code Playgroud)
用户模型(user.js)像这样引用配置文件模型(profile.js);
import DS from "ember-data";
export default DS.Model.extend({
NSP: DS.attr('string'),
Status: DS.attr('string'),
Profile: DS.belongsTo('profile', {embedded: 'always'})
});
Run Code Online (Sandbox Code Playgroud)
我试图DS.belongsTo('profile', {embedded: 'always'})用以下内容替换:
DS.belongsTo('user.profile', {embedded: 'always'})DS.belongsTo('user/profile', {embedded: 'always'})DS.belongsTo('user-profile', {embedded: 'always'})但这不起作用.
我在这里错过了什么吗?
我使用Ember CLI 0.1.15和emberjs开发了我的webapp.1.8.1
我用这个命令构建了应用程序:ember build --environment production,然后我从我项目的dist文件夹下生成的文件中生成了一个WAR,然后我将WAR放在tomcat的webapps文件夹中.
所以,当我打开应用程序时:http:// mytomcat/myapp / ...它很好,我看到了我的登录屏幕,我登录了,并在我的应用程序中导航,一切都很好.我也可以做后退/前进按钮,并且ember可以很好地处理过渡.
但是当我点击浏览器上的刷新按钮时 - 浏览器的地址栏显示了http:// mytomcat/myapp/inventory /那一刻 - 我从tomcat得到了404回复.
然后我弄清楚它为什么会发生:刷新按钮向tomcat发送一个请求路径/ myapp/myinventory/...当然,服务器上不存在路径/ myinventory.我们在浏览器上看到的所有路由 - 除了基本URL,http:// mytomcat/myapp / - 都是在客户端生成的.
所以,我的问题是:处理这种情况的正确方法(在余烬中)是什么?我需要刷新按钮才能正常工作.任何方式让ember拦截刷新按钮点击事件?
我想这个问题与此有关:https://github.com/stefanpenner/ember-app-kit/issues/486,但它没有我需要的答案.
提前谢谢,拉卡
---更新---
我处于这样一种情况,我希望能够有一个组件或帮助器,允许我迭代多次并每次输出封闭的块.像这样的东西:
{{#incremented-for 2}}
block to output
{{/incremented-for}}
Run Code Online (Sandbox Code Playgroud)
我尝试将其设置为组件,但无法找到使其工作的方法.我还尝试将其设置为帮助程序,并且能够找到一些似乎应该工作的代码:
export function incrementedFor(n, block) {
var accum = '';
for(var i = 0; i < n; ++i)
accum += block.fn(i);
return accum;
}
export default Ember.Handlebars.makeBoundHelper(incrementedFor);
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误,上面写着:
Uncaught Error: Assertion Failed: registerBoundHelper-generated helpers do not support use with Handlebars blocks.
Run Code Online (Sandbox Code Playgroud)
有没有人想过为什么这种方法可能不起作用,或者更好的是,在Ember-cli中更好的方法呢?
在ember-cli文档中, ember server命令用于启动应用程序.但是我们可以用ember serve命令做同样的事情.我假设server只是包装serve.任何人都可以澄清更多吗?
在Ember CLI中使用它时,我发现ES6模块中的导入路径非常混乱.例如,如果我想在我的应用程序中深入导入模型,我最终会做这样的事情:
import User from '../../../../../models/user';
Run Code Online (Sandbox Code Playgroud)
这是一次反复试验,因为很难直观地看到我正在使用它的文件夹树的深度.更糟糕的是,如果我重构我的文件,一切都会中断.
所以或者,我可以使用这样的绝对路径:
import User from 'app-name/models/user';
Run Code Online (Sandbox Code Playgroud)
我不想将应用名称硬编码到路径中,因为它可以改变.
是否有指定应用程序根目录的简写?
./不起作用,因为./暗示当前路径.
import User from './models/user';
Run Code Online (Sandbox Code Playgroud) 我正在构建一个Ember CLI应用程序(v0.2.3),我为我的应用程序中的适配器和序列化器生成了一些单元测试.生成的代码如下所示:
// app/serializers/my-model-test.js
// Replace this with your real tests.
test('it serializes records', function (assert) {
var record = this.subject();
var serializedRecord = record.serialize();
assert.ok(serializedRecord);
});
Run Code Online (Sandbox Code Playgroud)
和
// app/adapter/application-test.js
// Replace this with your real tests.
test('it exists', function (assert) {
var adapter = this.subject();
assert.ok(adapter);
});
Run Code Online (Sandbox Code Playgroud)
我在这些测试中放了什么?我为我的模型和组件构建了验收测试和单元测试,但不确定在这些单元测试中需要进行哪些测试.无法找到有关构建这些单元测试的文档,也无法在GH上找到构建这些测试的任何示例应用程序.
问题:
我有一个Ember CLI应用程序,它将使用多个API,我需要在开发模式下代理它们.
背景:
我有一个遗留的api,它暴露/api了我在本地开发机器上运行的服务localhost:3000
我有一个新的api暴露了服务/myapp/api/v1.这些服务最近从遗留应用程序中提取,并包含ember应用程序使用的大多数应用程序服务.
ember应用程序使用baseURL /myapp,因为它被部署到子目录.
我使用生成了两个http-proxys ember generate http-proxy.他们位于/server/proxies/api.js和server/proxies/myapp/api/v1.js
api.js
var proxyPath = '/api';
module.exports = function(app) {
var proxy = require('http-proxy').createProxyServer({});
proxy.on('error', function(err, req) {
console.error(err, req.url);
});
app.use(proxyPath, function(req, res, next){
// include root path in proxied request
req.url = proxyPath + '/' + req.url;
proxy.web(req, res, { target: 'http://localhost:3000' });
});
};
Run Code Online (Sandbox Code Playgroud)
的myapp/API/v1.js
var proxyPath = 'myapp/api/v1';
module.exports = function(app) {
var proxy = …Run Code Online (Sandbox Code Playgroud) 我正在使用ember-cli-sass
我想根据env变量定义一些sass变量.
我的theme1.scss文件
@if 'theme1' == process.env.THEME {
$color-secondary: #eee;
$color-primary: #ff0;
}
Run Code Online (Sandbox Code Playgroud)
我如何将我的env发送到西兰花构建过程
以及如何在sass脚本中访问env变量?
ember-cli ×10
ember.js ×8
broccolijs ×2
ecmascript-6 ×1
ember-model ×1
module ×1
proxy ×1
sass ×1
unit-testing ×1