Ember.js 如何使用action helper访问ember 1.0 pre中的特定上下文
在我的余烬视图中,我希望在每次访问期间获得此人,并将其传递给操作,但目前我只在路由器中获得一个jquery事件(奇怪的是,在1.0之前,这是否免费绑定到上下文) 模板Ember.js 如何使用action helper访问ember 1.0 pre中的特定上下文,ember.js,Ember.js,在我的余烬视图中,我希望在每次访问期间获得此人,并将其传递给操作,但目前我只在路由器中获得一个jquery事件(奇怪的是,在1.0之前,这是否免费绑定到上下文) 模板 <script type="text/x-handlebars" data-template-name="person"> {{#each person in controller}} <li> {{person.username}}
<script type="text/x-handlebars" data-template-name="person">
{{#each person in controller}}
<li>
{{person.username}}
<input type="submit" value="delete" {{action removePerson person}}/>
</li>
{{/each}}
</script>
控制器更详细
PersonController: Ember.ArrayController.extend({
content: [],
addPerson: function (username) {
var person = PersonApp.Person.create({
username: username
});
this.pushObject(person);
},
removePerson: function (person) {
this.removeObject(person);
}
}),
传递给路由器操作处理程序的第二个变量实际上是事件。上下文是此事件的一个变量。改写如下:
Router: Ember.Router.create({
root: Ember.Route.extend({
index: Em.Route.extend({
route: '/',
removePerson: function(router, event) {
router.get('personController').removePerson(event.context);
},
非常感谢。(不知道为什么我一开始在调试器中没有看到这一点)最后一个问题——我知道。如果我使用完整持久性来执行此操作,路由器会首先通过http异步调用一个简单的删除,然后在控制器上启动removePerson事件,使应用程序看起来像是实时发生的。如果没有,我应该如何处理这个问题?如果您使用的是ember数据,那么您的removePerson方法应该创建一个事务,将记录添加到事务中,调用deleteRecord,然后调用transaction.commit()。成功提交将自动从集合中删除记录。太棒了-我希望看到官方v1.0版本中包含的余烬数据(目前我没有实际使用它,所以我需要阅读)
Router: Ember.Router.create({
root: Ember.Route.extend({
index: Em.Route.extend({
route: '/',
removePerson: function(router, event) {
router.get('personController').removePerson(event.context);
},