2

У меня есть контроллер с 2 областями:Угловое: сфера обновления внутри рамки

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

и поле ввода:

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

При изменении value1 с полем ввода (который работает), значение2 не обновляется. Как я могу сделать эту работу?

+1

только объекты проходят по ссылке в JS - не примитивы. – tymeJV

ответ

5

Вы можете следовать правилу точки при объявлении объекта. Это даст вам prototypal inheritance вещь. Оба param1 & 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 директивы

Markup

<input type="text" ng-model="value1" ng-change="value2 = value1 + ' something'"> 

Или просто вы можете перемещать рядный html-код для функции контроллера, чтобы сделать его пригодным для тестирования.

Markup

<input type="text" ng-model="value1" ng-change="changedValue()"> 

Код

$scope.changedValue = function(){ 
    $scope.value2 = $scope.value1 + ' something' 
} 
+0

Спасибо за ваш ответ Pankaj! Я забыл упомянуть, что 2 области не должны быть точно такими же. Я отредактировал свой вопрос. Когда я изменю это в вашем примере, это не работает. – Jarno

+0

@ Jarno делает оба из них в качестве входного элемента? –

+0

Только значение value1 связано с входом. – Jarno

Смежные вопросы