Angular:更新范围内的范围

Jar*_*rno 2 javascript angularjs angularjs-scope angularjs-ng-change angularjs-ng-model

我有一个2个范围的控制器:

app.controller('search', function($scope) {
    $scope.value1 = '';
    $scope.value2 = 'Some text' + $scope.value1;
}
Run Code Online (Sandbox Code Playgroud)

和输入字段:

<input type="text" ng-model="value1">
Run Code Online (Sandbox Code Playgroud)

当我使用输入字段(有效)更改value1时,value2不会更新.我怎样才能做到这一点?

Pan*_*kar 5

您可以在声明对象时遵循点规则.那会给你原型继承的东西.这两个param1&param2将参考对象的相同副本.因此更新一个会自动更新另一个.

标记

<input type="text" ng-model="param1.value">
<input type="text" ng-model="param2.value">
Run Code Online (Sandbox Code Playgroud)

调节器

app.controller('search', function($scope) {
    $scope.param1 = {value : ''};
    $scope.param2 = $scope.param1;
}
Run Code Online (Sandbox Code Playgroud)

演示Plunkr

更新

如果你想将这些变量保持为原始状态,那么你应该在某些事件上更新它们,就像在这里你可以通过using ng-change指令来实现它

标记

<input type="text" ng-model="value1" ng-change="value2 = value1 + ' something'">
Run Code Online (Sandbox Code Playgroud)

或者只是您可以将内联html代码移动到控制器功能以使其可测试.

标记

<input type="text" ng-model="value1" ng-change="changedValue()">
Run Code Online (Sandbox Code Playgroud)

$scope.changedValue = function(){
    $scope.value2 = $scope.value1 + ' something' 
}
Run Code Online (Sandbox Code Playgroud)