Ember的单向约束输入?

时间:2017-05-23 23:53:47

标签: javascript ember.js

Ember的默认{{input}}助手会创建双向绑定。什么是创建仅单向绑定的输入元素的最先进方法?

Google搜索" ember单向输入"产生几个附加组件:

但是我需要一个附加组件吗?

4 个答案:

答案 0 :(得分:2)

最简单的方法是使用普通的html <input>代替{{input}}帮助器:

<input value={{foo}} />

如果您想触发对更改的操作:

<input value={{foo}} onchange={{action 'changeFoo' value="target.value"}} />

这是单向绑定,并按预期工作。

答案 1 :(得分:1)

我相信你可以在oneWay()助手的帮助下实现这一目标。请检查以下链接。

https://www.emberjs.com/api/classes/Ember.Binding.html#toc_one-way-bindings https://guides.emberjs.com/v2.13.0/object-model/bindings/#toc_one-way-bindings

来自ember指南的示例代码,

user = Ember.Object.create({
  fullName: 'Kara Gates'
});

UserComponent = Ember.Component.extend({
  userName: Ember.computed.oneWay('user.fullName')
});

userComponent = UserComponent.create({
  user: user
});

// Changing the name of the user object changes
// the value on the view.
user.set('fullName', 'Krang Gatessss');
// userComponent.userName will become "Krang Gatessss"

// ...but changes to the view don't make it back to
// the object.
userComponent.set('userName', 'Truckasaurus Gates');
user.get('fullName'); // "Krang Gatessss"

答案 2 :(得分:0)

input helpers默认使用双向绑定。

实现单向行为有不同的替代方案:

  1. 呈现您自己的html input代码:twiddle-1
  2. 创建标记名为input的无模板组件:twiddle-2
  3. 正如您所提及的那样使用插件。

答案 3 :(得分:0)

单向绑定不需要插件 - https://www.emberjs.com/api/classes/Ember.computed.html#method_oneWay

但我说我发现https://github.com/DockYard/ember-one-way-controls在日常发展中非常有用。