gpt4 book ai didi

javascript - ember js 参数存在

转载 作者:行者123 更新时间:2023-12-03 02:28:25 25 4
gpt4 key购买 nike

所以我需要这样做,点击商店会停止显示该商店商品的页面。通过链接 URL 传递商店 ID 时发生变化,但在产品的路由模型(参数)中,参数为空


型号名称(产品?)

import DS from 'ember-data';
import { empty } from '@ember/object/computed';

export default DS.Model.extend({
name: DS.attr('string'),
quantity: DS.attr('string'),
price: DS.attr('string'),
shops: DS.belongsTo('shop', {asynq: true}),
isNotValid: empty('name'),
});


型号名称(商店?)

import DS from 'ember-data';

export default DS.Model.extend({
name: DS.attr('string'),
address: DS.attr('string'),
phone: DS.attr('string'),
products: DS.hasMany('product',{asynq: true}),
});


Controller 名称(?)

import Controller from '@ember/controller';

export default Controller.extend({
isNew: false,

actions: {

newProduct() {
this.toggleProperty('isNew');
},

cancelNewProducts() {
this.set('isNew', false);
},

addNewProduct() {
const name = this.get('name');
const quantity = this.get('quantity');
const price = this.get('price');

let shop = this.get('store').peekRecord('shop', );
let product = this.get('store').createRecord('product', { name,quantity,price });
shop.get('products').pushObject(product);
product.save().then( function() {
shop.save();
});
product.save().then( ()=> this.set('isNew',false));
},

},

});


路线名称(?)

import Route from '@ember/routing/route';

export default Route.extend({

model(params) {
console.log(params.shop_id);
return this.store.query('product', {shops:params.shop_id});
},

actions: {

deleteProduct(product) {
let confirmation = confirm('Are you sure?');

if (confirmation) {
product.destroyRecord();
}
},

editProducts(product) {
console.log(id)
product.set('isEditing', true);
},

cancelProductsEdit(product) {
product.set('isEditing', false);
product.rollbackAttributes();
},

saveProducts(product) {
if (product.get('isNotValid')) {
return;
}
product.set('isEditing', false);
product.save();
},

},
});


路由器

import EmberRouter from '@ember/routing/router';
import config from './config/environment';

const Router = EmberRouter.extend({
location: config.locationType,
rootURL: config.rootURL
});

Router.map(function() {
this.route('shops', function() {
this.route('new');
this.route('edit', { path: '/:shop_id/edit' });
});

this.route('products', { path: '/:shop_id/products' }); // this should be in the map, right?

}); // ?
export default Router;

我的问题是,我无法向服务器发出请求,只能从具有可用id的商店获取商品。但是当我点击任何商店时,都会显示所有商品。而且我无法从 Controller 中的商店访问 params(shop_id),

最佳答案

我刚刚对你的程序进行了相当侵入性的重新格式化。记下路由器。看来里面有一些错误。另外,您不提供用于“查看”的 id。在你的 Controller 中。我们也不知道这些文件是如何连接的或者它们的名字是什么。您应该在我的格式之上进行编辑以帮助澄清。 {async: true} 在程序中拼写为 q

至于你的问题...我会尝试重新措辞。 “存储”这个词很令人困惑……因为我们习惯谈论数据“存储”。我认为你的意思是你有一个“商店”资源,并且你想“点击”商店......(可能是每个循环中的一个组件),然后你说你想“停止”包含商品的页面(产品) - 所以...也许您的意思是“库存”或“展示”该商店的产品。这可能位于组件中(如果只有几个) - 或者您可以转到商店的“详细信息”页面 - 显示该商店的所有产品。因为你提到了参数和 ID,我认为你的意思是走详细路线。

这是我对您的问题的最佳猜测:“我有‘商店’和‘产品’的资源。我正在构建一个列出商店的用户界面。我想让商店可点击,点击后,转换到商店详细信息页面 - 我可以在其中列出所有相关产品。我的链接助手(此处未显示)接受商店 ID - 但转换不成功并且参数无法识别。我做错了什么?”

对于这个问题,您可能会在 ember-twiddle 中创建一个更简化的版本来弄清事情的真相。我们实际上并不需要大部分操作来找出困惑的根源。

诚然,当您拥有服务器或 Mirage 服务器或任何设置时,很难展示这些内容。 Here's an example of the routing I would suggest - 一些基本的虚拟数据 - 在一个 embertwiddle 中。数据不是真正的 ember 对象/但请参阅链接和商店详细信息路线以了解您可能使用的内容。祝你好运!

其他说明:

  • ember-data 使用名为 isNew 的属性来记录 - 因此,您可能需要为您正在做的事情想一个不同的名称/

关于javascript - ember js 参数存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com