您好我需要一些帮助我尝试创建一个指令,该指令监视输入字段的模型,如果该模型更改它应该检查特殊字符,如果它们在那里模型被解析并且它应该返回解析的值。
现在所有这一切都正常工作,输入字段的值发生了变化并且是正确的,但似乎只有在模型尚未解析时仍然会更改值。
我的Html
<input type="text" name="bestellnummer" ng-model="we.bestellnummer" required parse/>
和我的指令
.directive('parse', function ($timeout, Ls, $window) {
return {
restrict: 'AE',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
scope.$watch(attrs.ngModel, function (Val) {
//console.log(Val)
if (Val != undefined) {
if ((Val.toString()).indexOf('?') != -1 && (Val.toString()).indexOf('!') != -1) {
Val = Val.slice(0, -1);
scope.code = new Gs1Parser.Parse(Val);
//console.log(scope.code);
if (scope.code != undefined && scope.code[0].Key != 'invalid') {
var ParsedVal = scope.code[0].Key;
scope.code = undefined;
$window.Gs1Parser.returnedValue = [];
//try with ngModel
ngModel.$modelValue = ParsedVal;
//element[0].value = ParsedVal;
//scope.ab.abNr = ParsedVal;
} else if (scope.code[0].Key == 'invalid') {
Val = Val.slice(1);
//element[0].value = Val;
//scope.ab.abNr = Val;
}
}
}
})
}
}
})
所以基本上用户输入了?12345!解析器将此值更改为345,这应该是新模型。目前该值为345但是一旦我发送数据,就会发送modelvale(?12345!)。
先谢谢
答案 0 :(得分:1)
只需更改范围值,例如:
Bundle bundle=new Bundle();
bundle.putString("message", "From Activity");
//set Fragmentclass Arguments
Fragmentclass fragobj=new Fragmentclass();
fragobj.setArguments(bundle);
(简单$parse(attrs.ngModel).assign(scope, Val);
不适用于&#39; model.value&#39;仅适用于简单的价值&#39;)
你应该小心,因为改变这个值会再次触发你的手表。