時計

0

maxの値が、それは私がやっている何を間違え見当がつかない時計

<div ng-controller='MyController' ng-app="myApp"> 
<div>{{title}}</div> 
<input id='txt' type='text' max="{{max}}" value="{{max}}" foo/> 
<input type="button" ng-click="changeMax()" value='change max' /> 

scope: { 
     max: '@', 
    }, 
    link: function(scope, element, attrs) { 
     /*scope.$watch(attrs.max, function() { 
      alert('max changed to ' + max); 
     });*/ 

     attrs.$observe('max', function(val) { 
      alert('max changed to ' + max); 
     }); 
    } 

に警告しなければならない変更した場合、私は、最高の時計を持っていると思います。私は$ watchと$ observerの両方を試しましたが、うまくいきませんでした。 誰でも手伝ってください。

JS FIDDLE demo

答えて

2

この作業コードを確認してください。私のコードで間違っていたものを

var app = angular.module('myApp', []); 
 

 
app.directive('foo', function() { 
 
    return { 
 
     restrict: 'EA', 
 
     scope: { 
 
      max: '@', 
 
     }, 
 
     link: function(scope, element, attrs) { 
 
      /*scope.$watch(attrs.max, function() { 
 
       alert('max changed to ' + max); 
 
      });*/ 
 

 
      attrs.$observe('max', function(val) { 
 
       alert('max changed to ' + val); 
 
      }); 
 
     } 
 
    } 
 
}); 
 

 
app.controller('MyController', ['$scope', function($scope) { 
 
    $scope.title = 'Hello world'; 
 
    $scope.max = 4; 
 
    $scope.changeMax = function() { 
 
     $scope.max += Math.floor(Math.random() * 10); 
 
    } 
 
}]);
 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular.min.js" ></script> 
 
    <div ng-controller='MyController' ng-app="myApp"> 
 
     <div>{{title}}</div> 
 
     <input id='txt' type='text' max="{{max}}" value="{{max}}" foo/> 
 
     <input type="button" ng-click="changeMax()" value='change max' /> 
 
    </div>

+0

? –

+0

foo指令:$ watchと置き換えられたアラートを削除しました( 'maxが' + max 'に変更されました)。アラートによって( 'maxが' + valに変更されました。 –

+0

@VarunSukheja:あなたの問題を解決する場合は、答えとしてマークしてください。 –