我一直试图找出在Knockout-JS中显示/编辑百分比值的正确方法(更一般地说,我应该如何创建像这样的可重用组件).

我的viewmodel有一个可观察的值,它是一个存储为小数的百分比,例如0.5代表50%.我想以百分比格式显示和编辑值(例如’50’),这样用户就不会感到困惑(他们很容易混淆).

可写的计算机

通过设置可写的计算函数,我能够得到一个简单的版本:见http://jsfiddle.net/Quango/fvpjN/

但是,这不是非常可重用,因为需要为每个值重新实现它.我尝试使用扩展器,但这有效地掩盖了潜在的价值,因此使其无法使用.

BindingHandlers

我认为我需要的是一个绑定处理程序,所以不要写

<input data-bind="value: commission" />

我会写的

<input data-bind="percentage: commission" />

我查看了knockout.js中“value”bindingHandler中的代码,但是有很多代码用于绑定,我不想复制它.

所以我的问题是:

>有没有一种好/标准/模板方式来进行这种价值转换?
>如果没有,有没有办法重新使用“值”绑定而无需复制和粘贴现有代码?

解决方法

我一直想写一个扩展器.所以这里是你的问题的另一个答案,通过一个淘汰扩展器来实现.

我仍然犹豫不决,我喜欢这个或者Percentage类更好.

HTML

<input data-bind="value: p1.percentage,valueUpdate: 'afterkeydown'"></input>%
= <span data-bind="text: p1"></span>

JavaScript的

ko.extenders.percentage = function(target,option) {
    target.percentage = ko.computed({
        read: function() {
            return this() * 100;
        },write: function(value) {
            this(value/100);
        },owner: target
    });
    return target;
};

var model = {
    p1: ko.observable(0.5).extend({'percentage': true})
}

ko.applyBindings(model)

现场演示

http://jsfiddle.net/DWRLr/

knockout.js – KnockoutJS中价值转换的最佳方法?的更多相关文章

  1. Rxswift observable bind(to :) vs subscribe(onNext :)

    抱歉.我很困惑Rxswift中的绑定是什么.据我所知,除非观察者订阅了它,否则observable不会产生价值,例如myObservable.subscribe(onNext:{}).但是,当我阅读以下代码行时:我很困惑,为什么在不调用subscribe方法的情况下能够观察到isValidObservable?为什么我们可以在LoginViewController.swift中调用bind(to:

  2. Android中的外部存储上的SQLite性能不佳

    我可以在我的真实应用程序中添加我已禁用locking并且它没什么区别.解决方法CommonsWare的评论是正确的.对数据库性能产生重大影响的是使用事务.在事务中包装插入循环.我不是100%确定它是否适用于InsertHelper,但您可以尝试用以下方法替换for循环:

  3. android – butterknife中bind和injectView之间的区别

    我正在使用butterknife库.我不太了解如何使用它.我发现injectView和bind做同样的事情,但我不太确定.任何人都可以解释这两者之间的区别.解决方法谁能解释这两者之间的区别?

  4. Android服务有关bind/unbind的问题?

    客户端可以使用bindService()/unbindService()调用原始的bind/unbind服务.我的问题是如何解析服务端的服务,而不是客户端调用unbindService(),可能我应该称之为unbindClient.我认为服务应该知道哪些客户端绑定了它,那么有没有办法告诉服务取消绑定特定客户端?

  5. 深入理解JS中的Function.prototype.bind()方法

    bind 是 ES5 中新增的一个方法,可以改变函数内部的this指向。这篇文章小编将带领大家深入理解Javascript中的Function.prototype.bind()方法。有需要的朋友们可以参考借鉴,下面来一起看看吧。

  6. JavaScript函数之call、apply以及bind方法案例详解

    这篇文章主要介绍了JavaScript函数之call、apply以及bind方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  7. jquery绑定事件 bind和on的用法与区别分析

    这篇文章主要介绍了jquery绑定事件 bind和on的用法与区别,结合实例形式分析了jquery绑定事件 bind和on的基本功能、用法、区别与操作注意事项,需要的朋友可以参考下

  8. JS前端面试题详解之手写bind

    这篇文章主要为大家介绍了JavaScript前端面试题中常出现的问题:如何用JavaScript来实现内置的bind方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

  9. jQuery绑定事件监听bind和移除事件监听unbind用法实例详解

    这篇文章主要介绍了jQuery绑定事件监听bind和移除事件监听unbind用法,结合实例形式详细分析了绑定事件监听bind和移除事件监听unbind的具体使用技巧与相关注意事项,需要的朋友可以参考下

  10. 关于Jquery中的bind(),on()绑定事件方式总结

    下面小编就为大家带来一篇关于Jquery中的bind(),on()绑定事件方式总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部