emberjs从onclick调用动作

时间:2014-04-30 13:54:05

标签: javascript ember.js

我有一个会返回一个文本块的模型,我想要一个警报来定义该文本块中的特定单词。所以我想在特定单词旁边添加一个链接,该链接将调用创建警报的操作。

我不能使用把手动作方法,因为页面已经被渲染。因此,当我推动我的模型时,我希望包含这样的内容:

<button id='definition' onclick='newAlert()'>i</button>

在单个文本块中可能有许多单词需要定义,因此我还需要发送标识符。

我的问题是,是否可以通过这种方式调用某个动作?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

每当需要使用纯js从DOM访问ember实体时,例如当需要处理onclick js事件并将其委托给ember实体时,可以执行类似

的操作

http://emberjs.jsbin.com/mimuwale/1/edit

<强> JS

App = Ember.Application.create();

function getView($el){
  return Ember.View.views[$el.closest(".ember-view").attr("id")];
}

function newAlert(el){
  getView($(el)).get('controller').send('newAlert',el.id);
}

App.IndexView=Ember.View.extend();

App.IndexController=Ember.Controller.extend({
  actions:{
    newAlert:function(buttonId){alert('clicked button:'+buttonId);}
  }
});

<强> HBS

<script type="text/x-handlebars" data-template-name="index">
  <button id='definition' onclick='newAlert(this)'>test</button>
</script>