9

在我的车把模板中,我有这个循环:

{{#each itemController="fund"}}
    <li>                        
        <label>{{title}}</label>            
        <span>{{amount}}</span>
        {{input type="text" placeholder="new user"
        value=newFullName action="createUser"}}
        {{partial 'user-list'}}
    </li>
{{/each}}

并且需要将当前对象作为参数传递给“createUser”操作。像这样的东西:

action="createUser(this)"

或者:

action 'createUser' this

但似乎 ember 无法处理输入字段内操作的参数......

我错过了什么吗?

4

4 回答 4

10

您现在可以传递一个函数以及值 -

submit=(action 'setName' 'Sal')

http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_closure-actions

于 2015-09-18T21:19:08.897 回答
8

我认为使用视图助手中的action属性是不可能做到这一点的。input

一种解决方法是将您的输入包装在一个表单中,该表单使用action视图助手使用提交事件,如下所示:

模板

{{#each}}
      <li>                   
          <form {{action "createUser" this on="submit"}}>
              {{name}}
              {{input type="text" value=name}}          
          </form>
      </li>
  {{/each}}

路线

  ...
  actions: {
    createUser: function(user) {
      alert(user.get('name'));
    }
  }
  ...

所以当用户点击回车时,就会触发事件。

action 属性和 action view helper 的主要区别在于 action view helper 更灵活,你可以提供上下文并将其放在任何标签内:

<div {{action "someAction" someObject}} on="click">Click me</div>

在路线:

actions: {
  someAction: function(someObject) {
    // do something with the someObject
  }
}

有关更多信息,请参阅文档

请查看 jsfiddle 以查看该示例的实际操作http://jsfiddle.net/marciojunior/UAgjX/

我希望它有帮助

于 2013-09-12T17:29:10.517 回答
2

最后我得到了这个解决方案:

模板

{{input class="newUser" type="text" value=newFullName placeholder="add user"}}
<button {{action 'createUser' this newFullName}}>Send</button>

控制器

createUser: function (fund, newFullName) {
        var fullName = newFullName;                        
        var user = this.store.createRecord('appUser', {
            fullName: fullName,                
            fund: fund,
            payments:[]
        });
        user.save().then(function(){                
            fund.get('users').pushObject(user);                
            fund.save().then(function(){
                fund.reload();
            });
        });
    }
于 2013-09-19T11:03:31.727 回答
-3

您可以将参数传递给操作助手:{{action "doSomething" xxx }}

其中 doSomething 是您的控制器方法,而 xxx 是模板当前上下文中的任何内容。

于 2015-03-09T16:54:35.230 回答