0

我的项目中有两个指令。它们允许使用用户定义的最小值和最大值来格式化数值,以及使用符号格式化的能力,一种用于浮点数,一种用于整数。我创建了该指令的模拟模型(例如,我没有添加 jGrowl,并且限制不适用于字段,仅适用于 ng-model),但一次只存储一个值。从格式和视觉方面来看,我的项目中的功能是完美的。但我需要模型中的所有值来保留它们的值。

{ "varA": "1173", "varB": "153", "varC": "153", "varD": "000000153" }
not { "varC": "153.00" }  or { "varA": "1173.00" } etc...

我认为问题在于返回值与 $setViewValue(); 和 $render(); 但我添加了更多的返回语句,问题仍然存在。

http://jsfiddle.net/yxRR8/2/

4

2 回答 2

0

您的小提琴很长,所以我没有通读所有内容,但我认为您的问题是您没有将数据绑定到父范围。默认情况下,指令具有隔离范围。使用类似的东西

scope: {var: '='}

在您的指令定义中。

请参阅这个问题, AngularJS 中范围原型/原型继承的细微差别是什么? 特别是关于指令的部分。

于 2013-11-05T16:43:40.073 回答
0

通过将我的 modelCtrl.$parsers.push() 包装在与“keydown”事件相关的 element.bind 中,我能够从被删除中获取键值对。这可以防止指令循环并返回空值。

element.bind('keydown', function() {
    modelCtrl.$parsers.push(function(inputValue) {
        showAlert("Parse", 1);

        if (!prev) {
            prev = false;
            var returnVal = checkVal(inputValue, modelCtrl, "I", true, minVal, maxVal);

            if (String(returnVal) === ".") {
                setAndRender(modelCtrl, "");
                return "";
            }
            else {
                return returnVal;
            }
        }
        return String(inputValue).replace(/[^0-9 . -]/g, '');
    });
});
于 2013-11-08T04:28:04.340 回答