Javascript 何时在knockoutJS中使用括号?
我知道您在knockoutjs中为ff使用了paranthesis: *代码中可观测函数的解包裹 *深入研究具有声明性绑定的对象 或者,当您有一个具有特定属性的对象人,例如: *person().firstname *人年龄 (最右边的属性不需要括号) 现在我有了这种html/js:Javascript 何时在knockoutJS中使用括号?,javascript,data-binding,knockout.js,knockout-2.0,Javascript,Data Binding,Knockout.js,Knockout 2.0,我知道您在knockoutjs中为ff使用了paranthesis: *代码中可观测函数的解包裹 *深入研究具有声明性绑定的对象 或者,当您有一个具有特定属性的对象人,例如: *person().firstname *人年龄 (最右边的属性不需要括号) 现在我有了这种html/js: <section> <label> <input data-bind="checked: displayGuitars" type="checkbox" /
<section>
<label>
<input data-bind="checked: displayGuitars" type="checkbox" />
Display Guitars
</label>
<div data-bind="fadeVisible: displayGuitars(), fadeDuration: 250">
<ul data-bind="foreach: products">
<li>
<span data-bind="text: model"></span>
</li>
</ul>
</div>
<div data-bind="dump: $data, enable: false"></div>
</section>
<script>
..................................some code
ko.bindingHandlers.fadeVisible = {
init: function (element, valueAccessor) {
// Start visible/invisible according to initial value
var shouldDisplay = valueAccessor();
$(element).toggle(shouldDisplay);
},
update: function (element, valueAccessor, allBindingsAccessor) {
// On update, fade in/out
var shouldDisplay = valueAccessor(),
allBindings = allBindingsAccessor(),
duration = allBindings.fadeDuration || 500; // 500ms is default duration unless otherwise specified
shouldDisplay ? $(element).fadeIn(duration)
: $(element).fadeOut(duration);
}
};
var vm = (function () {
var data = mockdata.getProducts();
var products = ko.observableArray(data);
var displayGuitars = ko.observable(false);
var vm = {
displayGuitars: displayGuitars,
products: products
};
return vm;
})();
ko.applyBindings(vm);
</script>
展示吉他
-
一些代码
ko.bindingHandlers.fadeVisible={
init:函数(元素、值访问器){
//根据初始值启动可见/不可见
var shouldDisplay=valueAccessor();
$(元素).切换(应显示);
},
更新:函数(元素、valueAccessor、allBindingsAccessor){
//更新时,淡入/淡出
var shouldDisplay=valueAccessor(),
allBindings=allBindingsAccessor(),
duration=allBindings.fadeDuration | | 500;//500ms为默认持续时间,除非另有规定
是否应显示?$(元素).fadeIn(持续时间)
:$(元素)。淡出(持续时间);
}
};
var vm=(函数(){
var data=mockdata.getProducts();
var产品=可观测的ko(数据);
var displayGuitars=ko.可观察(假);
var vm={
显示吉他:显示吉他,
产品:产品
};
返回虚拟机;
})();
ko.应用绑定(vm);
因此,基本上它所做的是,带有fadeVisible绑定的div被切换为show/hide(显示/隐藏),这取决于复选框是否选中,我尝试删除
中的括号,然后fadeVisible突然停止工作,当我选中/取消选中复选框时,div不再显示/隐藏。我的问题是,为什么我需要div中带有fadeVisible绑定的括号,如果它符合我上面提到的任何标准,那么它是哪一个
先生/女士,您的回答将大有帮助。谢谢++您的问题是在自定义绑定中没有对您的
值访问器进行展开调用。应该是这样的
init: function (element, valueAccessor) {
// Start visible/invisible according to initial value
var shouldDisplay = ko.unwrap(valueAccessor());
$(element).toggle(shouldDisplay);
},
如果您有一个较旧的版本,那么它将在Knockout2.3中工作,而不是使用它的ko.utils.unwrapObservable
这是在没有帕伦夫妇的情况下进行的演示。顺便说一句,在将来,当你有这样的代码来演示这个问题时,它有助于把你自己的一把小提琴放在一起,这样人们就可以快速地看到这个问题