使用Jquery更改值时,KnockoutJS属性不会更新

前端之家收集整理的这篇文章主要介绍了使用Jquery更改值时,KnockoutJS属性不会更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。



我有一系列复选框,我想收集所选的一个.复选框在div中,当div被点击时,复选框也应该被检查:
var oCheckBox = $($(this).find('.chkSocialMediaItem').get(0));
oCheckBox.attr('checked',!$(oCheckBox).attr('checked'));

这个工作很好,但是KnockoutJS没有拿起这个变化,所以不会更新我所选择的项目上的计数器.

我读到你需要触发更改事件的地方.但是当我在复选框上收听更改事件时,实际上会被触发.

任何帮助将不胜感激,
谢谢 !

更新:

我找到了一个“淘汰赛”的解决方案.
在我的div中,我做了一个数据绑定“点击”,并更改了该函数中的检查值:

<script type="text/html" id="Template">
    <div class="item" data-bind="click: DivClicked">
       <input type="checkBox" data-bind="checked: IsASelectedItem" class="chkSocialMediaItem"/>
    </div>
</script>


function SocialMediaSearchItem() {          
            this.IsASelectedItem = ko.observable();
            this.DivClicked = function () {
                this.IsASelectedItem(!this.IsASelectedItem());
            };
}

这是唯一的解决方案吗?我真的很希望看到一个Jquery解决方案.

解决方法

检查的绑定仅侦听点击事件.根据实际检查值的设置,手动触发点击事件最终会使该框不同步.

设置值的首选方法是更新视图模型值,就像您在上面的第二个示例中所做的那样.

但是,如果您使用1.3beta,那么使用ko.dataFor API可以轻松地连接元素及其相应的数据.它看起来像:

var oCheckBox = $('.chkSocialMediaItem'),data = ko.dataFor(oCheckBox[0]);
      data.selectedItem(!data.selectedItem());
原文链接:https://www.f2er.com/jquery/180264.html

猜你在找的jQuery相关文章