Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在AngularJS中双向绑定范围和数字输入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始与AngularJS一起玩,并试图了解绑定技巧。对于初学者,我试图做一个简单的转换计算器(几十个到几个,几十个)。这很好,但是当我尝试将范围输入和数字输入绑定到相同的模型属性时,在调整范围值时,输入的数字不会更新。我有一个jsfiddle显示行为:

常见的JavaScript为破碎和工作的fiddles:

var myApp = angular.module('myApp',[]);

myApp.controller('CalcCtrl',function ($scope) {
    var num = 0.0;
    $scope.qty = new Quantity(12);
    $scope.num = num;
});

function Quantity(numOfPcs) {
    var qty = numOfPcs;
    var dozens = numOfPcs / 12;

    this.__defineGetter__("qty",function () {
        return qty;
    });

    this.__definesetter__("qty",function (val) {
        qty = val;
        dozens = val / 12;
    });

    this.__defineGetter__("dozens",function () {
        return dozens;
    });

    this.__definesetter__("dozens",function (val) {
        dozens = val;
        qty = val * 12;
    });
}

BROKEN FIDDLE

HTML:

<div ng-controller="CalcCtrl">
    <form>
        <label for="pcs">Pieces:</label>
        <input type="number" min="0" ng-model="qty.qty" size="20" id="pcs"
        />
        <input type="range" min="0" max="100" ng-model="qty.qty" />
        <br/>
        <label for="numOfDozens">Dozens</label>
        <input type="number" min="0" ng-model="qty.dozens" size="20"
        id="numOfDozens" />
    </form>
</div>

然而,将两个数字输入绑定到相同的模型属性似乎可以正常工作,如这个小提示

WORKING FIDDLE

HTML:

<div ng-controller="CalcCtrl">
    <form>
        <label for="pcs">Pieces:</label>
        <input type="number" min="0" ng-model="qty.qty" size="20" id="pcs"
        />
        <input type="number" min="0" max="100" ng-model="qty.qty" />
        <br/>
        <label for="numOfDozens">Dozens</label>
        <input type="number" min="0" ng-model="qty.dozens" size="20"
        id="numOfDozens" />
    </form>
</div>

任何想法如何获取范围和数字输入绑定到一个单一的模型属性在AngularJS?谢谢。

这里的问题是输入类型=“范围”与字符串不匹配,而不是数字(而输入类型=“数字”仅适用于数字)。

http://www.w3.org/wiki/HTML/Elements/input/range

如果您添加val = parseInt(val)作为您的第一个指令在数量设置器应该工作:

this.__definesetter__("qty",function (val) {        
    val = parseInt(val);
    qty = val;
    dozens = val / 12;
});

jsfiddlehttp://jsfiddle.net/bmleite/2Pk3M/2/

大佬总结

以上是大佬教程为你收集整理的在AngularJS中双向绑定范围和数字输入全部内容,希望文章能够帮你解决在AngularJS中双向绑定范围和数字输入所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。