我有一个带有2个范围的控制器:
app.controller('search', function($scope) {
$scope.value1 = '';
$scope.value2 = 'Some text' + $scope.value1;
}
输入字段:
<input type="text" ng-model="value1">
当我使用输入字段(有效)更改value1时,value2不会更新。我怎样才能做到这一点?
答案 0 :(得分:5)
您可以在声明对象时遵循点规则。这会给你prototypal inheritance的东西。 param1
和&amp; param2
将引用相同的对象副本。因此,更新一个会自动更新另一个。
<强>标记强>
<input type="text" ng-model="param1.value">
<input type="text" ng-model="param2.value">
<强>控制器强>
app.controller('search', function($scope) {
$scope.param1 = {value : ''};
$scope.param2 = $scope.param1;
}
<强>更新强>
如果你想将这些变量保持为原始状态,那么你应该在某些事件上更新它们,就像你可以使用ng-change
指令
<强>标记强>
<input type="text" ng-model="value1" ng-change="value2 = value1 + ' something'">
或者只是您可以将内联html代码移动到控制器功能以使其可测试。
<强>标记强>
<input type="text" ng-model="value1" ng-change="changedValue()">
<强>代码强>
$scope.changedValue = function(){
$scope.value2 = $scope.value1 + ' something'
}