【发布时间】:2013-11-04 01:09:44
【问题描述】:
我目前正在设计一个浏览器内计算器,我想要的功能是创建一个输入框,并将其绑定到视图模型中的一个对象。
这个对象将有一个名为 value 的属性,这将是输入框显示的内容,但我还希望它具有最小和最大限制,如果超出它们会将框的背景颜色更改为红色。
我得到了基本的输入绑定,但我在为输入绑定创建自己的自定义绑定包装器时遇到了麻烦,该包装器也会改变背景颜色。
我的 HTML:
<td><input data-bind="calcVar: resistance" type="text" size="16" /></td>
我的 Javascript:
保存所有数据的“类”
var calcVar = function(value, lowerBound, upperBound) {
this.value = ko.observable(value);
this.lowerBound = ko.observable(lowerBound);
this.upperBound = ko.observable(upperBound);
};
在视图模型中创建一个变量:
this.fSwAct = ko.observable(new calcVar(200, 100, 100, 0, 1000));
启动功能
// Start-up function
j(document).ready(
function StartUp()
{
// Create custom binding
ko.bindingHandlers.calcVar = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.bindingHandlers.value.init(element, valueAccessor()().value, allBindings, viewModel, bindingContext);
},
update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
// Call value binding (child binding)
ko.bindingHandlers.value.update(element, valueAccessor()().value, allBindings, viewModel, bindingContext);
}
};
// Activates knockout.js
var app = new AppViewModel();
ko.applyBindings(app);
}
);
虽然正在调用自定义绑定函数,但输入绑定似乎不起作用,并且当值更改时,其他计算字段不会更新。我觉得这与我创建 calcVar“类”或将其传递给输入绑定的方式有关。
【问题讨论】:
标签: javascript binding knockout.js