基于另一个变量的输入中的ng-model

时间:2015-02-03 16:27:39

标签: javascript angularjs

我在我的角度应用<input type="text" ng-model="variableA">中有一个输入字段。我想根据某些条件使用variableAvariableB。我尝试了类似ng-model="condition ? variableA : variableB"之类的内容,但它会抛出Error: [ngModel:nonassign]。任何想法如何使它工作?

3 个答案:

答案 0 :(得分:5)

您可以使用ngModelOptions

<input type="text" ng-model="setModel" ng-model-options="{getterSetter: true}">

在您的控制器中:

$scope.setModel = function(value) {
  var model = '';
  if (condition) {
    model = "variableA";
  } else {
    model = "variableB";
  }

  if (angular.isDefined(value)) {
    return ($scope[model] = value);
  } else {
    return $scope[model];
  } 
};

答案 1 :(得分:2)

ngModel必须是属性表达式(遵循$ parse的规则)。 尝试使用代理,然后观察该变量,然后分配给A或B:

<input type="text" ng-model="variableC">

在您的控制器中:

$scope.$watch('variableC', function(value) {

  if(someCondition) {
    $scope.variableA = value;
  } else { 
    $scope.variableB = value;
  }
});

答案 2 :(得分:0)

怎么样

<input type="text" ng-model="variableC">

并在控制器中

$scope.variableC = (condition) ? variableA : variableB