【问题标题】:I want an action that links me to the Object clicked in a list of Objects我想要一个将我链接到在对象列表中单击的对象的操作
【发布时间】:2014-07-22 18:48:10
【问题描述】:

我有一个简单的操作,可以附加到{{#each}} 循环中的列表项,当触发该操作时,它将链接到该模型的实例

这就是现在的样子

VpcYeoman.SuperTableController = Ember.ArrayController.extend({
  actions: {
    goTo: function(input) {
      this.transitionToRoute('someModel', input);
    }
  } 
});

在这样的 HTML 元素上调用该操作

{{action 'goTo' this bubbles=false}}

您可以看到问题在于“goTo”不能在其他模型上重复使用,因为它专门针对“someModel”模型。

请帮助我使此操作适用于任何当前模型

我尝试用通用的“模型”甚至“this.model”替换“someModel”,但没有奏效。


请不要回复“使用 {{#link-to}}”。我知道这存在并且

【问题讨论】:

  • goTo 附加到列表项的代码在哪里? (你问题的后半部分在哪里?它在句子中间结束......)
  • someModel 应该是什么?我可以给你写一些伪代码。计算属性甚至一个简单的函数在这里就足够了......您需要弄清楚如何使用模型上下文来确定该路由路径。
  • 目前someModel 在我的代码中被users 取代。因此,单击用户列表中的用户将链接到该用户,并且现在可以正常工作,但问题是我不想在一个控制器中多次重写我的 goTo 操作。控制器是我在stackoverflow.com/questions/24871938/… 中提到的“SuperTableController”。使用这个控制器,我正在尝试进行处理所有基本editdeletelink to this 功能的全局操作
  • 抱歉,someModel 被替换为 user 而不是 usersusers 会给我一个错误。

标签: javascript jquery html ember.js handlebars.js


【解决方案1】:

在阅读本文之前,您应该知道我确实建议您使用链接到帮助程序。当我需要根据模型进行更改时,我通常会将计算属性传递给助手...

我不确定您在代码中的哪个位置执行了该操作,但您可以根据需要计算该路径。以这个项目控制器为例:

App.ItemController = Ember.ObjectController.extend({
  getTransitionPath: function () {
    return this.get('foo') + '_bar';
  },

  transitionPath: function () {
    return this.get('foo') + '_bar';
  }.property('foo'),

  actions: {
    goTo: function(input) {
      //this.transitionToRoute(this.getTransitionPath(), input); // Regular method
      this.transitionToRoute(this.get('transitionPath'), input); // Computed property
    }
  }
});

我也不知道您在这些方法中寻找什么样的逻辑,但这种模式应该适用于每个模型。

祝你好运!

【讨论】:

  • 我遇到了{{#link-to}} 的问题,它假设我希望我的所有文本都是蓝色的,有时,这取决于{{#link-to}}{{/link-to}} 标签内的 HTML 的多少或内容,它根本没有用。所以我建立了自己的行动。我刚刚更新了我的问题。
  • 'foo' 和 '_bar' 应该代表什么? model ?
  • 只是展示了如何使用当前模型的属性来返回动态字符串。
  • 我终于明白了!谢谢马修!
  • @IanSteffy 甜蜜!很高兴我能提供帮助。
猜你喜欢
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 2021-11-07
  • 2019-09-25
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多