我需要在我的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'),
});
这样做的正确方法是什么?
答案 0 :(得分:4)
你说它没有某种型号的支持,但是你的控制器说它是由某种型号支持的。很可能你让Ember感到困惑,它想要保存到应该支持控制器的模型,但它找不到模型。 ObjectController代理从控制器到模型的属性,当它没有模型时,它会对滥用行为大吼大叫。
http://emberjs.jsbin.com/niyawido/3/edit
http://emberjs.jsbin.com/niyawido/4/edit
答案 1 :(得分:1)
为什么不使用普通的"值"在你的输入标签?这是一个使用原型扩展使用您想要的可观察样式的胖子示例: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'),
希望这有帮助。
修改:有关更好的文档,请参阅Ember.Observable和#addObserver。