2016-10-21 14 views
1

Im new to Angular 1.5。配列が必要です。空の場合は、入力フィールドを無効にします。空でないときは、フィールドを有効にします。しかし、期待どおりに動作していません。私はシンプルにjsfiddleをまとめました。配列の長さに応じて入力フィールドを有効/無効にします。1.5

angular.module('demoApp', []) 
    .controller('MainController', MainController); 

function MainController() { 
    var vm = this; 
    this.data = ['a', 'b']; 

    setInterval(function() { 
     if (vm.data.length === 0) { 
      vm.data = ['a', 'b']; 
     } else { 
      vm.data = []; 
     } 
     console.log('vm.data is now ', vm.data); 
    }, 2000); 
} 

そして

<div ng-app="demoApp" ng-controller="MainController as mainCtrl"> 
    <input type="text" ng-disabled="!data" /> 
    <br /> 
    data is {{ data }} 
</div> 

私はsetInterval()メソッドが実行されるたびに期待する、HTMLが更新されるので、入力が有効と無効の間のサイクルだろう。しかし、テンプレートはデータ配列を出力していません。

答えて

2

コントローラインスタンスを使用しているため、mainCtrlエイリアスを使用する必要があります。dataが空であるかどうかを確認するか、lengthプロパティをチェックしないでください。

<div ng-app="demoApp" ng-controller="MainController as mainCtrl"> 
    <input type="text" ng-disabled="mainCtrl.data.length == 0" /> 
    <br /> 
    data is {{ mainCtrl.data }} 
</div> 

また、あなたはsetIntervalの代わりに$intervalを使用する必要があります。

Fiddle

+0

_ _それは '$のinterval'を使用する**必要だ "私は$間隔を使用するためにあなたをお勧めします"。 – zeroflagL

+0

だから私はそれが必要だと書いた。 – zeroflagL

関連する問題