Angular:范围

时间:2015-08-18 19:42:18

标签: javascript angularjs angularjs-scope angularjs-ng-model angularjs-ng-change

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

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

输入字段:

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

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

1 个答案:

答案 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;
}

Demo Plunkr

<强>更新

如果你想将这些变量保持为原始状态,那么你应该在某些事件上更新它们,就像你可以使用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' 
}