也许使用常规的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) 我有一个控制器,有一个searchQuery和建议属性.建议来自AJAX请求.如何在控制器中将建议属性作为承诺?
app/controllers/application.js
import Ember from 'ember';
const { computed, $ } = Ember;
export default Ember.Controller.extend({
searchQuery: '',
suggestions: computed('searchQuery', function() {
return $.getJSON(`songs/search.json?q=${this.get('searchQuery')}`);
})
});
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将生产模式中的ember-cli应用程序部署到nginx服务器上.我已经回顾了ember-cli文档并查看了其他类似的问题,例如(如何在github页面上部署使用ember-cli开发的Ember.js应用程序?) - 这些似乎表明在/中设置ENV.baseURL变量app/config/environment.js应解决问题,但我找不到适合我的值.
生成的文件ember build --environment production位于/ Users/gordon/src/app/dist
nginx配置看起来像:
server {
listen 4200 ssl;
server_name localhost;
ssl_certificate /Users/gordon/src/app/server.crt;
ssl_certificate_key /Users/gordon/src/app/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /Users/gordon/src/app/dist/;
location / {
# index index.html;
try_files $uri $uri/ /index.html?/$request_uri;
}
}
Run Code Online (Sandbox Code Playgroud)
在Users/gordon/src/app/config/environment.js中如果我将ENV.baseURL保留为默认值,我会在浏览器控制台中显示以下错误...
Uncaught TypeError: undefined is not a function vendor-70567c507a348c9884b7aba3ccaae1fd.js:14
Uncaught ReferenceError: DS is not defined
Run Code Online (Sandbox Code Playgroud)
...如果我将它设置为/ Users/gordon/src/app /,/ Users/gordon/src/app/dist /或/ Users/gordon/src/app/dist我得到
Uncaught SyntaxError: Unexpected token < :4200/Users/gordon/src/sellthru/dist/assets/vendor-70567c507a348c9884b7aba3ccaae1fd.js:1
Uncaught SyntaxError: Unexpected token < :4200/Users/gordon/src/sellthru/dist/assets/sellthru-app-4b7e6077c7df38b31e70e32056d7d7aa.js:1
Uncaught …Run Code Online (Sandbox Code Playgroud) Ember CLI文档说明了/app/styles以下文件夹:
包含样式表,无论是SASS,LESS,Stylus,Compass还是普通CSS(尽管只允许使用一种类型,请参阅资产编译).这些都编译成app.css.
我有以下文件/app/styles:app.css,one.css,two.css.
我希望在启动服务器时,在文件夹/ dist/assets中会有文件调用appName.css,内容将是所有三个文件的串联.相反,只有app.css文件的内容.所以我@import在app.css中解决了这个问题:
@import url("one.css");
@import url("two.css");
Run Code Online (Sandbox Code Playgroud)
这与0.0.46一起使用,虽然不是最佳的,因为对服务器提出了更多请求.现在我更新到0.1.1和文件one.css,two.css不再复制到/dist/assets文件夹.
但主要问题是:如何实现文件/app/styles夹中所有css文件的串联?我错过了一些基本的东西,或者是否需要包含一些命令Brocfile.js?
更新
以下是Brocfile.js显示我们如何连接CSS文件的片段:
var concat = require('broccoli-concat');
var cleanCSS = require('broccoli-clean-css');
var concatenatedCss = concat('app/styles', {
inputFiles: [
'reset.css',
'common.css',
'layout.css',
...
],
outputFile: '/assets/appName.css',
wrapInFunction: false
});
if (app.env === 'production') {
concatenatedCss = cleanCSS(concatenatedCss, {restructuring: false});
}
module.exports = app.toTree([concatenatedCss]);
Run Code Online (Sandbox Code Playgroud)
我们手动将文件添加到inputFiles数组.
只是说我创建了一个与其他用户共享的插件,我需要导入ember-data.
import DS from 'ember-data';
Run Code Online (Sandbox Code Playgroud)
如果它可能不存在于客户端代码中,我该如何导入它.基本上我需要一个条件来检查ember-data是否可用,如果是这样导入并执行某些操作,否则不要这样做.
if(ember data exists) {
//do something
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试克隆一个Git存储库,其中包含一个Ember-CLI项目(https://github.com/tgfischer/StockMarketApp).当我这样做时,我收到以下错误:
tom@tom-fischer:~/Desktop/StockMarketApp$ ember server
version: 0.2.0-beta.1
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/
Object function glob(pattern, options, cb) {
if (typeof options === "function") cb = options, options = {}
if (!options) options = {}
if (typeof options === "number") {
deprecated()
return
}
var g = new Glob(pattern, options, cb)
return g.sync ? g.found : g
} has no method 'hasMagic'
TypeError: Object function …Run Code Online (Sandbox Code Playgroud) 在构建仅用于生产时,是否可以从ember-cli中的vendor.js中排除jQuery依赖项?我想在我的网站中单独包含它.
我有一个Ember模板,它使用Handlebar表达式渲染文本,即{{caption}}.正在呈现的文本中包含主题标签,每个标签都需要点击,然后转到Ember应用程序中的特定路径.
我创建了一个帮助程序来解析文本,并用一个链接指向必要的路径并用hashtag替换每个hashtag,所以现在Handlebar表达式如下所示:{{clickable-hashtags caption}}.但是,帮助程序使用常规HTML <a href>标记创建链接,并使用Ember.Handlebars.SafeString返回.
我想{{#link-to}}为每个hashtag 使用Ember的帮助方法,但似乎无法弄清楚如何做到这一点.Handlebars是否可以解析link-to模板{{caption}}表达式中的标签?
我有一个迁移到Ember CLI的Ember EAK项目,测试编码为mocha/chai测试运行器,虽然我已经安装了ember-cli-mocha,但它在迁移项目中无法正常运行.我可以使用'ember generate'和mocha蓝图来生成新的测试存根,然后我可以进入并或多或少地重新实现我在EAK中的测试吗?
所以我想使用'ember generate'来为现有路由,控制器和视图生成测试,而不是一起生成新的存根对象和测试.
恩惠-v
版本:2.3.0
无法启动守望者; 回退到NodeWatcher以获取文件系统事件.
访问http://www.ember-cli.com/user-guide/#watchman了解更多信息.
节点:5.0.0
os:linux x64
http://www.ember-cli.com/user-guide/#watchman只有mac的解决方案不适用于ubuntu
ember-cli ×10
ember.js ×8
javascript ×2
ember-model ×1
mocha.js ×1
promise ×1
ubuntu ×1
watchman ×1