我正试图在Ember.js
中显示和隐藏一些按钮,如下所示。
{{#view App.myView contentBinding="App.myObject"}
<div id="my_widget" class="well span3">
{{#if content.isConditionTrue}}
<button id="stop_button" class="btn btn-primary"> Stop </button>
<button id="start_button" class="btn btn-primary" > Start </button>
<button id="record_button" class="btn btn-primary">Record </button>
</div>
{{else}}
<div id="widget_warning_box" class="well">
<p> No cameras are open, open a camera in Add/Remove Cameras tab. </p>
</div>
{{/if}}
</div>
{{/view}}
,视图如下:
App.myView = Ember.View.Extend({
didInsertElement: function() {
$record = $("#record_button")
$start = $("#start_button")
$stop = $("#stop_button")
$record.click(function(){
console.log("record clicked")
});
$start.click(function(){
console.log("start clicked")
});
});
myObject控制器是
App.myObject = Ember.Object.create({
isConditionTrue : false;
});
此类工作(如果myObject.isConditionTrue
为false
,则按钮会被文字替换,isCondionTrue
为true
时会显示)但显示按钮时,他们没有点击功能。我猜它是因为在调用didInsertElement时它们不在DOM中。那么,有什么方法可以解决这个问题吗?我应该进行子/父视图设置吗?任何指针赞赏。
答案 0 :(得分:2)
嗯,我绝对不是能说出正确方法的人,因为我也只是在学习烬,但这是我在小提琴上的工作方法
http://jsfiddle.net/drulia/zkPQt/
基本上每次将myObject.isConditionTrue
切换到false
时,ember都会从DOM中删除按钮,这就是jQuery选择器停止工作的原因。我附加了ember js {{action}}帮助器并放置了响应myObject中事件的函数,现在按钮正在工作并在屏幕上显示操作结果。