我正在制作一个玩具应用程序来学习余烬.我有属于风格的食谱.样式只包含name属性(以及隐式id).我在新模板中设置选择字段时遇到问题,无法选择配方的样式.
这是我目前的路线,控制器和模板:
路线:
App.RecipesNewRoute = Ember.Route.extend({
model: function() {
return App.Recipe.createRecord({
title: '',
description: '',
instructions: ''
});
},
setupController: function(controller, model) {
controller.set('content', model);
}
});
Run Code Online (Sandbox Code Playgroud)
控制器:
App.RecipesController = Ember.ArrayController.extend({});
App.RecipesNewController = Ember.ObjectController.extend({
create: function() {
this.transitionToRoute('recipes.show', this.content);
},
cancel: function() {
this.content.deleteRecord();
this.transitionToRoute('recipes.index');
},
buttonTitle: 'Add Beer Recipe'
});
Run Code Online (Sandbox Code Playgroud)
模板:
食谱/新的和形式部分:
<script type="text/x-handlebars" data-template-name="recipes/new">
{{ partial 'recipes/form' }}
</script>
<script type="text/x-handlebars" data-template-name="recipes/_form">
{{ title }}
<form>
<fieldset>
<div>
<label {{bindAttr for="titleField.elementId"}}>Title</label>
{{view Ember.TextField valueBinding='title' name='title' viewName='titleField'}}
</div>
<div> …Run Code Online (Sandbox Code Playgroud) 不知何故,该参数user_id未传递给我的UserIndexRoute.怎么可能出错?
我得到的错误是
断言失败:您不能将
undefinedid作为id 传递给商店的find方法
router.js
var Router = Ember.Router.extend({
location: DaappEmber2ENV.locationType
});
Router.map(function() {
this.resource('users', function(){
this.resource('user', { path:'/:user_id' }, function(){
this.route('edit');
});
this.route('create');
});
});
Run Code Online (Sandbox Code Playgroud)
导出默认路由器;
路由/用户/ index.js
export default Ember.Route.extend({
model: function(params){
Ember.Logger.debug('Params for user/index route:', params);
return this.store.find('user', params.user_id);
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个关系(很多)的余烬数据模型.所以有一个计算属性取决于关系元素.我需要根据关系属性的数据返回布尔值.
isAllowed: function(){
return this.get('allowedUsers').then(function(data){
var user = this.get('currentUser');
return data.contains(user);
}.bind(this));
}.property()
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,isAllowed是计算属性并且allowedUsers与user模型有许多关系async并被设置为true.isAllowed被设置为promise对象而不是返回布尔值.我甚至试图创建另一个承诺对象,如下面但没有运气.
isAllowed: function(){
return new Ember.RSVP.promise(function(resolve, reject){
this.get('allowedUsers').then(function(data){
var user = this.get('currentUser');
resolve(data.contains(user));
}.bind(this));
}.bind(this));
}.property()
Run Code Online (Sandbox Code Playgroud)
如何确保将isAllowed设置为布尔值而不是promise对象?
请原谅我提出了这个标题,但我真的不知道如何问这个,所以我只是解释一下。模型:组(有)用户(有)帖子定义为:
// models/group.js
name: DS.attr('string'),
// models/user.js
name: DS.attr('string'),
group: DS.belongsTo('group')
// models/post.js
name: DS.attr('string'),
user: DS.belongsTo('user'),
Run Code Online (Sandbox Code Playgroud)
当我请求时/posts,我的服务器返回这个嵌入的记录:
{
"posts": [
{
"id": 1,
"name": "Whitey",
"user": {
"id": 1,
"name": "User 1",
"group": 2
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,group没有组记录,而是有一个 id。
使用我的序列化程序:
// serializers/user.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
group: {embedded: 'always'}
}
});
// serializers/post.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
user: {embedded: 'always'}
}
});
Run Code Online (Sandbox Code Playgroud)
这期望User和Post模型在其中嵌入了记录。但是,它带来了一个问题,因为在 json 响应中没有嵌入的group …
我有一个比赛模型,其中包含与之相关的一系列比赛.假设我想立刻销毁集合中的所有匹配项,应该怎么做?这是我尝试过的:
var matches = tournament.get('matches').toArray();
for (var i = 0; i < matches.length; i++) {
matches[i].destroyRecord();
}
tournament.save().then(function(tournament) {
that.transitionTo('tournaments.setup', tournament);
});
Run Code Online (Sandbox Code Playgroud)
这个toArray位似乎不正确,但它会阻止修改迭代,因为我遍历它.似乎应该有一种方法可以立即销毁所有这些比赛,然后保存比赛.
我已经定义了一个模型(app/models/job.js)
import DS from 'ember-data';
export default DS.Model.extend({
status: DS.attr(),
result: DS.attr()
});
Run Code Online (Sandbox Code Playgroud)
我试图从索引控制器(app/controllers/index.js)加载它
import Ember from 'ember';
export default Ember.Controller.extend({
productName: "",
customerName: "",
startDate: "",
endDate: "",
actions: {
search: function() {
let data = this.store.find("job", '9e5ce869-89b3-4bfc-a70f-034593c21eae');
return data;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我得到的HTTP响应是:
{
"status": "OK",
"result": {
"b": 2,
"a": 2,
"see": 1,
"c": 1
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么得到以下错误和警告:
WARNING: Encountered "status" in payload, but no model was found for model name "status" (resolved model name using next-gen-analytics@serializer:job:.modelNameFromPayloadKey("status")) …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的Ember应用程序升级到最新版本,但在测试其功能时,某些操作无效.我之前在旧版本中运行良好的代码如下.
export default Ember.Controller.extend({
needs: 'sales-order',
actions: {
showModal: function(mode){
this.get('controllers.sales-order').send('showModal', mode);
}
}
});
Run Code Online (Sandbox Code Playgroud)
看起来" 需求 "是折旧的.
我正在使用海市蜃楼来创建虚假数据。
场景/default.js
export default function(server) {
server.createList('product', 48);
server.loadFixtures();
}
Run Code Online (Sandbox Code Playgroud)
上面我正在创建 48 个产品,我正在调用控制器
this.store.query('product', {
filter: {
limit: 10,
offset: 0
}
}).then((result) => {
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
并在海市蜃楼/config.js
this.get('/products', function(db) {
let products = db.products;
return {
data: products.map(attrs => ({
type: 'product',
id: attrs.id,
attributes: attrs
}))
};
});
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如何每页加载 10 个产品?我将过滤器 10 作为页面大小发送,偏移量表示页码。
应该对 config.js 进行哪些更改以仅加载有限的产品?
如果我们必须将ember-data及其save()和find()方法与postgrest样式的REST调用集成,那么ember-data本身就能理解json-api,我们需要在哪里进行更改?
我们是否需要在ember或某些服务器端逻辑中修改客户端,以便与ember-data要求进行映射.
因此,最后的REST api调用看起来像是从相关表格中获取电影及其标题和competition.name - >
http://localhost:3001/film?select=title,competition{name}
http://localhost:3001/users?select=email::text&id=eq.2&sign_in_count=eq.16
Run Code Online (Sandbox Code Playgroud) 我写了一些 ember 验收测试用例。问题是当我http://localhost:4200/tests通过 Acceptance访问 URL和过滤器模块时,测试用例运行速度快如闪电。即使这些是在async await函数中编写的。
我想使用 ember 运行循环run.later或run.next. 但这不是解决方案。
有没有办法slow mode在应用程序顶部的某个地方添加(或)是否有任何已经存在的测试助手?所以我可以看到运行中的测试用例。
ember-data ×10
ember.js ×10
ember-cli ×3
javascript ×2
ember-qunit ×1
postgrest ×1
templates ×1
views ×1