2016-01-20 20 views
5

私はAngularJSを使い始めていません。現在、次の問題を抱えています。入力時にng-changeが機能しない

here in my plnkrのように、私は$scope.myDate.valueの値を変更できます。

<input>ng-change="barFunc()"を追加すると、このスコープで機能できないという問題がありました。

ng-changeまたはng-watchはどのように使用できますか? 誰かがplnkrの仕事をすることができれば幸いです。

<!DOCTYPE html> 
 
<html ng-app="demo"> 
 
<head> 
 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"> 
 
    <link href="//rawgithub.com/g00fy-/angular-datepicker/1.0.3/dist/index.css" rel="stylesheet"> 
 
    <style> 
 
     input {margin: 45px 0 15px 0;} 
 
     pre{padding: 15px; text-align: left;} 
 
    </style> 
 
</head> 
 
<body> 
 
<div class="container"> 
 
    <div class="row"> 
 
     <div class="col-md-4"> 
 
      <div ng-controller="foo"> 
 
       <input type="datetime" class="form-control" date-time ng-model="myDate.value" 
 
        ng-change="barFunc()" format="yyyy-MM-dd hh:mm:ss" placeholder="Select datetime"> 
 
       <pre>myDate: {{myDate.value}}</pre> 
 
       <pre>myDate + " abc": {{ custom.value }}</pre> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div> 
 

 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<script src="//code.angularjs.org/1.4.8/angular.js"></script> 
 
<script src="//rawgithub.com/g00fy-/angular-datepicker/1.0.3/dist/index.js"></script> 
 
<script> 
 
angular.module('demo', ['datePicker']).controller('foo',['$scope', function($scope){ 
 
    $scope.myDate = { 
 
     value: '' 
 
     }; 
 
     
 
    $scope.barFunc = function() { 
 
     $scope.custom.value = $scope.myDate.value + " abc"; 
 
    }; 
 
}]); 
 
</script> 
 
</body> 
 
</html>

答えて

2

plunkrで:あなたのコントローラで

あなたはできる あなたはこのようなウォッチャ設定することができ$scope.custom.value

+0

はい!作業[plnkr](http://plnkr.co/edit/hKohYQSC5SG7ZF33qz45?p=preview)を参照してください。 – herrh

2

私は$を使用このケースで見ます:あなたは前$scope.customを定義する必要が

$scope.custom = { 
    value : '' 
}; 

$scope.$watch('myDate.value', function() { 
    $scope.barFunc(); 
}); 

$scope.barFunc = function() { 
    $scope.custom.value = $scope.myDate.value + " abc"; 
}; 

または

+0

このng-watchの例をありがとう;) – herrh

2

へのアクセス:

$scope.$watch('myDate', function(oldValue, newValue) { 
$scope.barFunc(newValue); 

を});

$scope.custom = { 
    value: '' 
    }; 

をし、それが動作するはずです:

いますが、カスタムオブジェクトを定義する必要があります。私はこれが最善の解決策であるとは思わない - なぜ私は何かが期待どおりに機能していない理由を理解できないので、ウォッチャーを設定しているような気がする。私はそれがあなたがやろうとしていることを得て、それがあなたが必要とするものならばあなたの問題を迅速に解決するものとしてこれを提供するだけです。

+0

の場合は、上記の私の答えではっきりしていない - 私はあなたがカスタムオブジェクトを定義した後でも、なぜここで動作しないのかわからないし、その1つを把握する時間がありませんでした。他の誰かが問題のその部分に対する解決策を提供しているかどうかを見ることにかなり興味があります。 –

関連する問題