更改输入后,变量未更新

时间:2014-12-04 13:24:00

标签: javascript angularjs angularjs-scope

我的控制器:

.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>

就像一个输入和两个按钮一样简单来设置&#34;条形码&#34; var值。 当我加载视图时,它可以工作,我可以单击按钮并更改值,但是一旦我更改输入值,函数就会停止工作....

编辑1: 不,我没有忘记&#34;链接&#34;对控制器的看法,我有以下代码:

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

编辑2: 如果我使用:

<form ng-controller="ExampleController">

它起作用,如果我使用&#34; $ parent&#34;像这样:

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

这意味着使用&#34;状态&#34;没有像我预期的那样工作......它创造了一个本地的&#34;修改时的输入范围......

2 个答案:

答案 0 :(得分:2)

您忘记添加ng-controller指令。

<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>

答案 1 :(得分:0)

我认为您的问题与not having a dot in your ng-model有关。我不能100%确定没有Plunkr来证明这个问题,但如果我在解决这个问题,这将是我看的第一个地方。

顺便说一句,范围内的问题是我更喜欢使用John Papa推荐的the vm variable and "controller as" syntax的原因。