gpt4 book ai didi

javascript - ember.js 链接到帮助程序中的“this”

转载 作者:行者123 更新时间:2023-11-28 08:21:35 25 4
gpt4 key购买 nike

我正在尝试获得流行的 ember.js 框架的实践经验,并对许多神奇的东西感到非常惊讶。

其中一个就是link-to Handlebars 助手中的this,我无法理解。

以下是我的代码场景:

// handlebar script
<script type='text/x-handlebars' data-template-name='products'>
<h1>Products</h1>
<ul class='list-unstyled col-md-8'>
{{#each}}
<h2>{{title}}</h2>
<p>{{#link-to 'product' this class='btn btn-success' }}Buy for ${{price}}{{/link-to}}</p>
{{/each}}
</ul>
</script>

// in app.js
App.PRODUCTS = [
{
title: 'Chair',
price: 99,
description: 'Chair is...',
},
...
];
App.Router.map(function() {
this.resource('products');
this.resource('product', { path: '/products/:title'});
});
App.ProductsRoute = Ember.Route.extend({
model: function() {
return App.PRODUCTS;
}
});
App.ProductRoute = Ember.Route.extend({
model: function(params) {
return App.PRODUCTS.findBy('title', params.title);
}
});

我开始知道this指的是模板中的当前产品,但我的问题是:

  1. 它是否与App.ProductRoute路由器交互?如果是的话怎么办?
  2. 我们可以用 this.title 替换 this 吗?

最佳答案

  1. 是的,link-to 帮助器可以。 link-to 帮助程序根据您提供的信息构建 URL。它使用路由名称查找路由器中定义的路由并使用您指定的路径。然后,它使用对象的 ID 来填充动态段。它还确保在必要时正确填写父路由。

  2. 不,您需要使用 this,因为它需要 id 来构建 URL。您过去只能传入 this.id,但我认为您不能再这样做了。 (无论如何,这是一个坏主意。)此外,Ember.js 将使用您传递给它的对象作为路由模型,从而跳过 ProductRoute 中的 model Hook 。您传递给它的对象可以是完全加载的模型,也可以是模型的 promise 。

关于javascript - ember.js 链接到帮助程序中的“this”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890748/

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