我有一个会返回一个文本块的模型,我想要一个警报来定义该文本块中的特定单词。所以我想在特定单词旁边添加一个链接,该链接将调用创建警报的操作。
我不能使用把手动作方法,因为页面已经被渲染。因此,当我推动我的模型时,我希望包含这样的内容:
<button id='definition' onclick='newAlert()'>i</button>
在单个文本块中可能有许多单词需要定义,因此我还需要发送标识符。
我的问题是,是否可以通过这种方式调用某个动作?
感谢您的帮助。
答案 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>