【问题标题】:link-to action parameters are not working in ember js链接到操作参数在 ember js 中不起作用
【发布时间】:2014-05-14 16:42:45
【问题描述】:

嗨,我对 ember js 很陌生。我在模板中的链接到操作上传递操作参数(id),但我没有在我的控制器中获得值。

我的模板代码如下:

index.html:

             <script type="text/x-handlebars" data-template-name="search">

             {{#each model.results}}

             // here i pass id value along with action

             {{#link-to 'profile' id action="profileinfo"}}

             </script>

app.js:

          App.SearchController = Ember.ObjectController.extend({

             id: '',

             actions:{
               profileinfo: function(id){

                // Here i access id value like this
               console.log(id);
               var id = this.get('id');})  

当我单击链接操作转到 Searchcontroller 时,但我得到的 id 值为空。我在堆栈溢出中遵循了一些解决方案,但不幸的是我没有得到任何东西。请提供一些解决方案

【问题讨论】:

标签: ember.js


【解决方案1】:

我不明白您为什么要使用 {{#link-to}} 助手来触发控制器上的操作。也许您可以简单地使用 {{action}} 助手?

如果你尝试这样做,会成功吗?

<button type="button" {{action "profileinfo" id}}>Click me !</button>

从那里,您的console.log(id); 应该会获得您的价值。

编辑

也适用于&lt;a&gt; 标签

<a href="#" {{action "profileinfo" id}}>Click me !</a>

【讨论】:

  • 我可以想到一个场景,你想要一个 link-to 和一个 action:假设你有一个按钮,你想采用 active 状态(你得到如果它是link-to)并且您希望按下按钮以冒泡到父控制器,以便在父视图中发生某些事情(如果您只是路由到孩子通常不会改变路线)。
  • 我仍然希望在模型中使用适当的操作,然后调用this.transitionToRoute。我基本上认为{{#link-to}} 必须仅限于基本重定向。如果你想处理更复杂的逻辑,你必须把它交给view 甚至controller
  • @PascalBoutin:我认为不应在路由之外触发转换,以确保关注点分离。路由器路由,控制器处理动作......此外,正如@neverfox 提到的,link-to 提供的不仅仅是简单的重定向。有一个扩展链接到动作处理功能的插件(github.com/Kuzirashi/ember-link-action),但它现在不适合我(ember@2.2.0)
  • @delavnog 嘿,我的插件绝对适合你,我已经将它更新到 Ember 2.8,但它甚至适用于 1.13。如果仍然有问题,请重试并创建问题。 :)
【解决方案2】:

我为此创建了流行的插件:

{{#link-to 'profile' id invokeAction='profileinfo'}}

只需安装它:

ember installember-link-action

如果您喜欢它,请留下一颗星,如果您觉得缺少任何东西,请留下反馈。 :) 它适用于 Ember 1.13 和 2.X(在 Travis CI 上测试)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    相关资源
    最近更新 更多