在Ember中调用控制器内的动作

时间:2014-04-11 08:30:01

标签: ember.js

我从服务器获取一些数据,在我的控制器中,我试图以列表格式显示它。我想要做的是允许用户点击该列表中的任何项目并在其后面调用操作。这是我的js代码。

            for(var index in posts) {
                if (posts.hasOwnProperty(index)) {
                    console.log(1);
                    var attr = posts[index];
                    //console.log(attr);
                    /*$("ul#previous_recipients").append('<li class="list-group-item"><label>'+attr.name+'' +
                        '</label><a href="javascript:void(0)" class="close g-green" {{action "aa"}}>Add</a></li>');*/

                    $("ul#previous_recipients").append(Ember.Handlebars.compile('<li class="list-group-item"><label>{{attr.name}} </label><a href="#" {{action "test"}}  class=" close g-green">Add</a></li>'));
                }
            }

如何对其采取行动? {{action“test”}}未被调用。

2 个答案:

答案 0 :(得分:0)

您必须编译把手模板并在同一控制器中的动作哈希中定义测试操作。

$("ul#previous_recipients").append(Ember.Handlebars.compile(' <li class="list-group-item"><label>{{attr.name}} </label> <a href="#" {{action "test"}} class=" close g-green">Add</a></li> '));

你必须将这个html代码从控制器移动到一个把手文件,这将是好的。

答案 1 :(得分:0)

您需要做的是创建一个余烬视图并给它一个

templateName

属性,它将包含您的html和handlebars表达式。或者,你可以在视图中说

defaultTemplate: Em.Handlebars.compile(/*your handlebars and html markup here*/)

使用Jquery做这样的事情并不是做事的蠢货。