js:如何观察输入字段中的值何时发生变化

Ember.js: How to observe when a value in an input field changes

本文关键字:字段 何时发 变化 输入 何观察 观察 js      更新时间:2023-09-26

我需要在Ember.js应用程序中创建一个简单的HTML输入文本字段。这个特定输入框的值不绑定到任何特定的模型。当输入文本框模糊或失去焦点时,我需要能够运行一些JavaScript。在我的模板中,目前我有如下内容:

{{input valueBinding="pitcherSalary" placeholder=0}}

我尝试通过在控制器中执行以下操作来观察pitcherSalary的值,没有任何运气:

MyApp.OptimalController = Ember.ObjectController.extend({
 pitcherSalaryObserver: function () {
    var self = this;
    console.log("changing....");
  }.observes('pitcherSalary'), 
});

正确的做法是什么?

你说它不是由某个模型支持的,但你的控制器说它是由某个模型支持的。你可能弄混了Ember,它想保存到模型,它应该支持控制器,但它没有找到模型。ObjectController将属性从控制器代理到模型,当它没有模型时,它就会大喊误用。

Bad: ObjectController without a model

http://emberjs.jsbin.com/niyawido/3/edit

好:带有模型的ObjectController

http://emberjs.jsbin.com/niyawido/4/edit

Good:没有模型的控制器

http://emberjs.jsbin.com/niyawido/2/edit

为什么不在输入标签中使用普通的"value"呢?下面是一个简单的例子,它使用了你想使用prototype扩展的可观察对象样式:http://emberjs.jsbin.com/zuxuli/2/edit

我输入:

{{input type=number value=amount placeholder="Billed Amount"}}
{{input type="checkbox" checked=roundTip}} //"checked" is a kind of value attrib
我可见:

observeStuff: function () {
  console.log("blah!!!");
}.observes('roundTip'),
observeStuff2: function () {
  console.log("crap!!!");
}.observes('amount'),

希望对你有帮助。

编辑:参见烬。