Cok*_*aka 5 ember.js ember-cli
我使用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 defined.\n\n1 error');
});
});
Run Code Online (Sandbox Code Playgroud)
事实证明,"App"无法在任何地方被识别(甚至不是来自models.js).
我是EmberCLI的新手.谁能告诉我该怎么做?严格要求我们不能使用Ember-Data.
谢谢!
加成:
感谢Daniel和Buck的快速回复,我已经检查了它们并且它有效.
我仍然很顽固,试图将所有对象定义放在一个单独的js文件(models.js)中......现在我发现了如何.
首先,您可以创建一个js文件,我们将其命名为models.js.您不必将它放在models /目录下; 你可以把它直接放在app /下.
这是models.js的示例内容:
从"余烬"进口Ember;
var Estado = Ember.Object.extend({
describe: function() {
return "Hi, the estado is " + this.get("idEstado");
}.property("idEstado")
});
var Distrito = Ember.Object.extend({
describe: function() {
return "Hi, the distrito is " + this.get("idDistrito");
}.property("idDistrito")
});
var models = {
Estado: Estado,
Distrito: Distrito
};
export default models;
Run Code Online (Sandbox Code Playgroud)
然后,在您的Route javascript中,您可以这样使用它:
import models from '../models';
export default Ember.Route.extend({
model: function() {
return models.Estado.findAll();
}
});
Run Code Online (Sandbox Code Playgroud)
只是一个替代方案,如果你认为你的项目的每个域模型过度杀戮都有单独的js文件.
谢谢!
这App.Person是基于全局变量的Ember应用程序的遗留物,它不再适用于Ember CLI世界.Ember CLI使用目录结构在需要时查找应用程序的各个部分.
将您的模型更改为:
import Ember from 'ember';
export default Ember.Object.extend({
helloWorld: function() {
alert("Hi, my name is " + this.get('name'));
}
});
Run Code Online (Sandbox Code Playgroud)
在路径文件中,导入并使用模型类:
import Ember from 'ember';
import Person from '../models/person';
export default Ember.Route.extend({
model: function() {
return Person.create({
name: "Tom Dale"
});
}
});
Run Code Online (Sandbox Code Playgroud)
如果您没有使用Ember Data,您也可以将其删除.正如它在文档中建议的那样,运行:
npm rm ember-data --save-dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3336 次 |
| 最近记录: |