Breezejs Double trouble in angularjs

前端 未结 5 1702
一整个雨季
一整个雨季 2021-01-20 14:46

I am trying to change a value in a angular view from a integer to a float/double value that is bind to ngmodel. The input don’t except anything other than a integer.

5条回答
  •  无人及你
    2021-01-20 15:25

    I tracked down the behaviour in the breeze code, when the value change it is intercepted and parsed:

    var coerceToFloat = function (source, sourceTypeName) {
       if (sourceTypeName === "string") {
            var src = source.trim();
            if (src === "") return null;
             var val = parseFloat(src);
            return isNaN(val) ? source : val;
        }
        return source;
    };
    

    So when the value change this function is called that parse the string to a float, the problem is as soon as the value entered is some number and a point like 5. it parse it to the number 5 witch is obviously correct. So you will never be able to get past the point.

    When changing the input to a number type it works because its sourceTypeName is not a string.

    Update

    I ended up changing the breeze code to enable the decimal to be entered, I’m still not sure if I missed something but this works for me.

    var coerceToFloat = function (source, sourceTypeName) {
        if (sourceTypeName === "string") {
            var src = source.trim();
            if (src === "") return null;
            var val;
            if (src.indexOf('.', src.length - 1) !== -1) {
                val = src;
            }
            else {
                val = parseFloat(src);
            }
            return isNaN(val) ? source : val;
        }
        return source;
    };
    

提交回复
热议问题