函数调用ng-model AngularJs

时间:2017-02-14 10:01:06

标签: javascript angularjs

<div class="row" ng-repeat="row in skuDetails">
  <div class="col-md-2">
    <md-input-container class="md-block" style="margin-bottom: 6px;">
        <label style="font-size: 14px; font-weight: 400; line-height: .75;">
        Mrp 
      </label> 
      <input type="text" name="input" ng-model="getMrp(row.mrp)"
      ng-readonly="true"> 
   </md-input-container>
</div>
</div>

skuDetails包含mrp。我需要将mrp除以100,并将其分配给ng-model。当我确实遇到错误但值已分配时。因此尝试了功能,我遇到了同样的错误。有什么方法可以在ng-model中使用表达式?

控制器

scope.getMrp = function(mrp) {
        var value = mrp/100;
        return value;
    } 

错误:表达式'getMrp(row.mrp)'不可分配。元件:

4 个答案:

答案 0 :(得分:1)

无法将功能传递给ng-model。

你可以使用ng-change。

答案 1 :(得分:0)

无法将函数传递给ng-model。

分配给$ scope值,你可以绑定$ scope变量。

$scope.myval;
scope.getMrp = function(mrp) {
        var value = mrp/100;
        $scope.myval = value;
} 

然后,

<input type="text" ng-init="getMrp(row.mrp)" name="input" ng-model="myval"
      ng-readonly="true"> 

答案 2 :(得分:0)

使用ng-init()指令在初始加载时评估给定的表达式。

<input type="text" name="input" ng-init="row.mrp=getMrp(row.mrp);" ng-model="row.mrp"
      ng-readonly="true">

答案 3 :(得分:0)

ng-init是您解决方案,就像每个人都回答的那样。但是他们并没有注意到它是ng-repeat中的一个boucle,所以使用索引来初始化它们。

<div class="row" ng-repeat="row in skuDetails track by $index">
  <div class="col-md-2" ng-init="setCustomMrp(row.mrp, $index)">
    <md-input-container class="md-block" style="margin-bottom: 6px;">
        <label style="font-size: 14px; font-weight: 400; line-height: .75;">
        Mrp 
      </label> 
      <input type="text" name="input" ng-model="customMrp[$index]"
      ng-readonly="true"> 
   </md-input-container>
</div>
</div>

并在js文件中:

scope.customMrp = []; 
scope.setCustomMrp = function(mrp, index) {
   customMrp[index] = mrp/100;
}