2014-12-04 4 views
0

Моего контроллера:Переменные не обновляются после изменения входа

.controller('ExampleController', ['$scope', function($scope) { 
    $scope.barcode = 111; 
    $scope.scanBarcode = function() { 
     $scope.barcode = 123123123; 
    }; 

    $scope.scanThis = function() { 
     $scope.barcode = 456456456; 
    }; 
}]) 

Моего мнения:

<form> 
    <div class="list list-inset"> 
     <label class="item item-input"> 
      <input type="number" placeholder="Code?" ng-model="barcode"> 
     </label> 
     {{barcode}} 
    </div> 
    <button class="button button-positive button-block" ng-click="scanBarcode()">Scan!</button> 
    <button class="button button-positive button-block" ng-click="scanThis()">Scan this!</button> 
</form> 

так просто, как один вход и две кнопки, чтобы установить «штрих-код» значение вара. Это работает, когда я загружаю вид, я могу нажать кнопки и изменения стоимости, но как только я изменить значение входной функции перестают работать ....

EDIT 1: Нет, я не забыл на «связь» с видом на контроллер, у меня есть следующий код:

.state('tab.dash', { 
     url: '/dash', 
     views: { 
     'tab-dash': { 
      templateUrl: 'templates/tab-dash.html', 
      controller: 'ExampleController' 
     } 
     } 
    }) 

EDIT 2: Если я использую:

<form ng-controller="ExampleController"> 

Он работает, а также, если я использую «$ родитель "вот так:

<input type="number" placeholder="Code?" ng-model="$parent.barcode"> 

Это означает, что использование «состояние» не работает, как я ожидал ... Это создает «локальную» область для ввода, когда модифицируется ...

+0

Вы видите «111» на входе при загрузке представления? если нет, область ExampleController, вероятно, не используется теми же элементами формы (например: если форма является частью директивы) – Edd

+0

@ Edd да, я вижу. –

+1

Это очень поможет, если вы создадите Plunkr, демонстрирующий проблему. –

ответ

2

Вы забыли добавить нг-контроллер директивы.

<form ng-controller="ExampleController"> 
    <div class="list list-inset"> 
     <label class="item item-input"> 
      <input type="number" placeholder="Code?" ng-model="barcode"> 
     </label> 
     {{barcode}} 
    </div> 
    <button class="button button-positive button-block" ng-click="scanBarcode()">Scan!</button> 
    <button class="button button-positive button-block" ng-click="scanThis()">Scan this!</button> 
</form> 
+0

Нет, пожалуйста, см. Мой номер редактирования 1. –

+0

Но это работает .. если я использую $ parent.barcode на входе, он также работает ... Это означает, что использование «состояния» не работает как ожидалось .... –

+0

use ng-model = "barcode" –

0

Я считаю, что ваша проблема связана с not having a dot in your ng-model. Я не могу быть на 100% уверен, что без Plunkr, чтобы продемонстрировать проблему, но если бы я искал проблему, это было бы первое место, которое я бы посмотрел.

Как в стороне, проблема с точкой в ​​области видимости, почему я предпочитаю использовать the vm variable and "controller as" syntax, рекомендованный Джоном Папой.

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