2017-01-21 2 views
1

Я новичок в Angular и пытаюсь создать приложение в ионной форме. У меня есть 2 поля на экране, и я хочу реализовать следующее.Угловая инертная проблема с привязкой данных

  1. , когда пользователь вводит что-то в price поле, я хочу, чтобы обновить weight поле соответственно.
  2. , когда пользователь вводит что-то в поле weight, я хочу обновить поле price.

Вот мой код.

<div class="col col-50"> 
     <div class="card"> 
      <label class="item item-input"> 
       <input ng-model="sale_item_weight" value="{{ sale_item_weight }}" ng-change="syncWithItemPrice()" type="number" placeholder="Enter Weight"> 
      </label> 
     </div> 
    </div> 
    <div class="col col-50"> 
     <div class="card"> 
      <label class="item item-input"> 
       <input ng-model="sale_item_price" value="{{ sale_item_price }}" ng-change="syncWithItemWeight()" type="number" placeholder="Enter Price"> 
      </label> 
     </div> 
    </div> 

и в мой контроллер у меня есть эти методы:

$scope.syncWithItemWeight = function() { 
    var itemPrice = $scope.sale_item_price; 
    $scope.sale_item_weight = parseInt(itemPrice) * 2; 

} 

$scope.syncWithItemPrice = function() { 
    var itemWeight = $scope.sale_item_weight; 
    $scope.sale_item_price = parseInt(itemWeight)/2; 

} 

Когда я изменяю одно поле другой не обновляется. Функции вызываются, я убедился в этом, добавив к ним alert.

+0

Ее, кажется, работает хорошо для меня, вы можете разместить весь свой код. Скорее всего, это опечатка. См. Это [link] (https://plnkr.co/edit/1WUamNKfg8IfRufwNs5r?p=info) –

ответ

0

Создайте объект json вместо использования переменной области видимости.

Используйте этот ниже код.

HTML

<div class="col col-50"> 
    <div class="card"> 
     <label class="item item-input"> 
      <input ng-model="sale_item.sale_item_weight" value="{{ sale_item.sale_item_weight }}" ng-change="syncWithItemPrice()" type="number" placeholder="Enter Weight"> 
     </label> 
    </div> 
</div> 
<div class="col col-50"> 
    <div class="card"> 
     <label class="item item-input"> 
      <input ng-model="sale_item.sale_item_price" value="{{ sale_item.sale_item_price }}" ng-change="syncWithItemWeight()" type="number" placeholder="Enter Price"> 
     </label> 
    </div> 
</div> 

JS

$scope.sale_item = {}; 

$scope.syncWithItemWeight = function() { 
    var itemPrice = $scope.sale_item.sale_item_price; 
    $scope.sale_item.sale_item_weight = parseInt(itemPrice) * 2; 
} 

$scope.syncWithItemPrice = function() { 
    var itemWeight = $scope.sale_item.sale_item_weight; 
    $scope.sale_item.sale_item_price = parseInt(itemWeight)/2; 
} 
+0

спасибо, что это сработало. Не могли бы вы объяснить, почему прямая переменная области не работает. –

+0

@MubasharAbbas ссылаются на эту ссылку для лучшего понимания вложенных областей http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html –

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