AngularJS指令检测传入的模型属性更改

AngularJS指令检测传入的模型属性更改,angularjs,directive,Angularjs,Directive,我有一个单独作用域的指令。我想检测作为父范围变量的属性的更改 到目前为止,我有以下几点: var app = angular.module("app", []); app.controller("ctrl", function($scope, $timeout) { $timeout(function() { console.log("called"); $scope.isReady = true; $scope.$apply(); }, 2000);

我有一个单独作用域的指令。我想检测作为父范围变量的属性的更改

到目前为止,我有以下几点:

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


app.controller("ctrl", function($scope, $timeout) {

  $timeout(function() {
    console.log("called");

    $scope.isReady = true;
    $scope.$apply();
  }, 2000);


});

app.directive("car", function($log) {
  return {
    scope: {
      make: "=carMake"
    },
    restrict: 'E',
    template: "<strong ng-bind='make'></strong>",
    link: function(scope, elem, attrs) {

      scope.$watch(attrs.shouldDo, function(value) {
        var val = value || null;
        if (val) {
          $log.info(scope.$eval(attrs.shouldDo));
        }
      }, true);

    }
  }
});
var-app=angular.module(“app”,[]);
应用程序控制器(“ctrl”,函数($scope,$timeout){
$timeout(函数(){
控制台日志(“调用”);
$scope.isReady=true;
$scope.$apply();
}, 2000);
});
应用指令(“汽车”,功能($log){
返回{
范围:{
make:“=carMake”
},
限制:'E',
模板:“”,
链接:功能(范围、要素、属性){
范围.$watch(attrs.shouldDo,函数(值){
var val=值| | null;
if(val){
$log.info(范围$eval(属性shouldDo));
}
},对);
}
}
});


如果我将作用域设置为
false
它可以工作,但是我需要它与一个独立的作用域一起工作。

只需将
作用域
部分写为:

 scope: {
        make : "=carMake",
        shouldDo: '='
    },
固定演示

指令示例:

app.directive("car", function($log) {
    return {
        scope: {
            make: "=carMake",
            shouldDo: '='
        },
        restrict: 'E',
        template: "<strong ng-bind='make'></strong>",
        link: function(scope, elem, attrs) {    

            scope.$watch(function() {
                return scope.shouldDo
            },
            function(newValue, oldValue) {
                var val = newValue || null;
                if (val) {
                    $log.info(scope.shouldDo);
                }
            });    
        }
    }
});
当使用HTML时:

<car car-make="make" should-do="{{isReady}}"></car>

演示2

<car car-make="make" should-do="{{isReady}}"></car>