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