ember 在每个循环的输入值中计算

ember computed in input value from each loop

我在 ember 上有一个输入元素,而值来自每个条件

{{#each items as |item|}}
        <div class="form-group">
          <label class="col-sm-3 control-label">Judul {{item.no}}</label>
          <div class="col-sm-9 input-group">
            {{input class="form-control" value=item.title placeholder="Tambah judul" type="text"}}
            <span class="input-group-btn">
              <a class="btn btn-default remove_detail" type="button" onclick={{action 'decreaseTitle'}}><i class="fa fa-times"></i></a>
            </span>
          </div>
        </div>
{{/each}}

我只想 "watch" 而 value=item.title 中的输入已从 ember 计算出来。怎么做?

如果你想动态地观察数组深处的东西,最好用一个组件来包装这些逻辑:

{{#each items as |item|}}
        <div class="form-group">
          <label class="col-sm-3 control-label">Judul {{item.no}}</label>
          <div class="col-sm-9 input-group">
            {{my-input item=item}}
            <span class="input-group-btn">
              <a class="btn btn-default remove_detail" type="button" onclick={{action 'decreaseTitle'}}><i class="fa fa-times"></i></a>
            </span>
          </div>
        </div>
{{/each}}

此处,my-input 将是具有这些逻辑的组件,在组件的 .js 文件中,

computedProperty: Ember.computed('item.title', {
  //your logics goes here...
};

并且在组件的模板文件中,

{{input class="form-control" value=item.title placeholder="Tambah judul" type="text"}}

以及任何其他必须绑定的逻辑都可以在组件的范围内实现


@rakwaht,item.title 不需要用大括号括起来,因为它在另一个助手(输入)

请参阅以下 twiddle 以了解依赖于数组中某项的 属性 的计算 属性 定义。您可以查看 application.js 控制器。

Ember.computed('items.@each.title', function(){...})

对你有用。