如何在Ember.js中调用jQuery的hide()方法?

时间:2012-12-14 07:32:30

标签: javascript jquery ember.js

我试图使用jQuery方法hide()隐藏对象,但它不起作用。

我使用console.log()来检查被调用函数中参数的值,所以我知道我做得不对。但是,我不知道如何让它发挥作用......

这就是我所拥有的:

#------------------------Model------------------------


App.Monster = Ember.Object.extend({

name: "",
hp: 0,
isDead : false,

isDeadChanged: function(target, value){
    App.monstersController.kill(target);
}.observes('isDead')

});



#------------------------Controller------------------------




App.monstersController = Ember.ArrayProxy.create({

content:[],

createMonster: function(name,hp){
    var monster = App.Monster.create({name:name});
    this.pushObject(monster);
},


kill: function(target){

    //I Want the selected object to hide by using Jquery hide method!!
    $('target').hide();

    this.removeObject(target);


},


#------------------------HTML FILE------------------------



{{#each App.monstersController contentBinding="App.monstersController.content" tagName="ul"}}
    <li>
        {{view Ember.Checkbox checkedBinding="isDead"}}
        <label for="" {{bindAttr class="isDead"}}>{{name}}</label>
    </li>
{{/each}}

2 个答案:

答案 0 :(得分:4)

通常将您的DOM脚本模式带到Ember是行不通的,因为Ember不是关于DOM操作,而是关于使用对象描述您的应用程序。应用程序的DOM表示将自动更新以反映其基础数据对象的状态。

Ember.View使用isVisible属性跟踪其可见性(及其子视图的可见性),并将为您处理切换它的DOM表示。您应该尝试揭示给定视图上下文的可见性的语义对象含义。例如,如果您确定todo列表中的已完成项目不可见,您可以执行以下操作:

{{#each item in controller}}
  {{view App.TodoItemView isVisibileBinding="item.isComplete"}} <a {{action kill item}}>Done!</a>
{{/each}}

答案 1 :(得分:-1)

不要引用target

kill: function(target){   
    //I Want the selected object to hide by using Jquery hide method!!
    $(target).hide();   
    this.removeObject(target);
},

$('target')查找<target>元素。