<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)'不可分配。元件:
答案 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;
}