我在使用ng-value更新或将值或数据分配到模型时遇到问题。
我想将DisplayName模型中的任何值复制到CopyDisplayName并使用下面的指令我能够做到这一点,但问题是模型CopyDisplayName在我提交更改时没有任何值。只有我手动输入它才能有。
<input type="Text" ng-model="DisplayName" ng-disabled="true" />
<input type="Text" ng-model="CopyDisplayName" ng-value="DisplayName" />
忘记包括DisplayName
被禁用..数据将来自服务电话。
答案 0 :(得分:2)
<强> ngValue 强>
将给定表达式绑定到或输入[radio]的值,以便在选择元素时,将该元素的ngModel设置为绑定值。
您可以查看此documentation。
所以基本上,你现在正在做的那个不起作用。
您可以在角度控制器中执行此操作:
$scope.copyValue = function () {
$scope.copyDisplayName = $scope.displayName;
}
在html中:
<input type="text" ng-model="displayName" ng-change="copyValue()" />
答案 1 :(得分:0)
只需将一个变量分配给另一个变量:
// in the controller
$scope.CopyDisplayName = $scope.DisplayName;
如果您需要让它们保持同步(并且由于某种原因,您不想只使用相同的变量),那么您可以通过ng-change
更新它们:
<input type="Text" ng-model="DisplayName" ng-change="CopyDisplayName = DisplayName" />
ng-value
(或ng-checked
)等指令只能切换DOM中的属性 - 它们不会改变视图模型。
答案 2 :(得分:0)
您可以在$watch
上添加DisplayName
作为:
$scope.$watch('DisplayName',function(newValue, oldValue){
console.log(newValue +":"+oldValue)
$scope.CopyDisplayName = newValue;
});
答案 3 :(得分:0)
要更新副本,您需要通过引用复制值。为此,您需要将displayName
包装到对象:
$scope.model = {DisplayName: 'val'};
并复制一份:$scope.modelCopy = $scope.model;
<input type="Text" ng-model="model.DisplayName" ng-disabled="true" />
<input type="Text" ng-model="modelCopy.DisplayName" ng-value="DisplayName" />
答案 4 :(得分:0)
你可以在控制器中做的是观察模型并在每次更改时复制该值($ watch会为你做到这一点)你不需要对HTML进行ngChange。
$scope.$watch('displayName', function() {
$scope.copyDisplayName = $scope.displayName;
});