我的项目中有两个指令。它们允许使用用户定义的最小值和最大值来格式化数值,并且能够使用符号格式化,一个用于浮点数,一个用于整数。我已经创建了该指令的模拟模型(例如,我没有添加jGrowl,并且这些限制不适用于字段,仅适用于ng-model),但一次只存储其中一个值。从格式和视觉方面来看,我的项目中的功能是完美的。但我需要模型中的所有值来保留它们的值。
{ "varA": "1173", "varB": "153", "varC": "153", "varD": "000000153" }
not { "varC": "153.00" } or { "varA": "1173.00" } etc...
我认为问题在于返回值与$ setViewValue();和$ render();但是我添加了更多的返回语句,问题仍然存在。
答案 0 :(得分:0)
你的小提琴很长,所以我没有阅读所有内容,但我认为你的问题是你没有数据绑定到父范围。默认情况下,指令具有隔离范围。使用像
这样的东西scope: {var: '='}
在你的指令定义中。
看到这个问题, What are the nuances of scope prototypal / prototypical inheritance in AngularJS? 特别是关于指令的部分。
答案 1 :(得分: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, '');
});
});