我是angularjs的新手, 我正在使用我在这里的自定义指令 Fiddle 该指令在验证后没有将价格值发布给控制器,我只得到名称字段值。
这是我的代码:
<div class="form-group">
<label for="exampleInputEmail1">Item Price</label>
<div class="input-group">
<span class="input-group-addon">$</span>
<input id="phone" class="form-control" ng-model="item.price" currency-input>
</div>
</div>
这是控制器代码:
angular.module('ngApp')
.controller('ItemCtrl',function($scope){
$scope.item = {};
$scope.addItem = function(){
console.log($scope.item);
}
})
.directive('currencyInput', function(){
return ......
};
});
答案 0 :(得分:2)
我看到您正在使用link
函数注册自定义解析器。
请注意,这种方法更适用于将自定义parsers
注册到NgModelController
,因为在指令之外没有直接的API来执行此操作。
我建议进行以下更改以使其正常工作。
angular.module('minovateApp',[])
- 您需要传递一个空数组,表明此模块没有依赖关系。not returning the parsed value
,因此请更改您的link
函数,如下所示。在货币输入指令中
link: function(scope, element, attrs, ctrl) {
/* removed the return as it's not required */
ctrl.$parsers.push(function(inputValue) {
var inputVal = element.val();
/* removing your logic for brevity */
var res = intPart + decPart;
if (res != inputValue) {
ctrl.$setViewValue(res);
ctrl.$commitViewValue();
ctrl.$render();
}
/* return the final value once you're done parsing */
return res;
});
以下是带有上述更改的示例Pen。希望这会有所帮助:)