angularjs自定义指令值未过帐到控制器

angularjs自定义指令值未过帐到控制器,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我是新来的angularjs, 我使用的是我在这里得到的自定义指令 此指令在验证后未将价格值过帐到控制器,我只得到名称字段值 这是我的密码: <div class="form-group"> <label for="exampleInputEmail1">Item Price</label> <div class="input-group"> <span class="input-group-addo

我是新来的angularjs, 我使用的是我在这里得到的自定义指令 此指令在验证后未将价格值过帐到控制器,我只得到名称字段值

这是我的密码:

<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> 

}))

我看到您正在使用
link
函数注册自定义解析器

请注意,这种方法更多的是将自定义的
解析器注册到
NgModelController
中的一种变通方法,因为在指令之外没有直接的API来实现这一点

我建议进行以下更改以使其正常工作

  • angular.module('minovatepp',[])
    -您需要传递一个空数组,指示此模块没有依赖项
  • 您无法在模型中捕获值的原因是,您没有从自定义解析器返回解析后的值,因此请更改
    链接
    函数,如下所示
  • 货币输入指令中

        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;
        });
    

    这是一个带有上述更改的示例。希望这有帮助:)

    尝试通过使用(并在这里发布)一个最小的示例来缩小范围。很好,它正在工作,我只是把
    返回res:
    谢谢@Arkantos
        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;
        });