2016-02-21 76 views
2

我创建了一个具有隔离范围的指令。 selectedcontractguid通过html传递给指令。指令中的变量未定义,带有隔离范围

当我console.log $scope在指令中,它显示我selectedcontractguid以及正确的GUID。

但是,当我尝试访问指令控制器中的$scope.selectedcontractguid时,它的日志未定义。

任何人都知道为什么?请看下面的例子。

<instalments-box selectedcontractguid="instalment.contract.guid"> </instalments-box> 

angular.module('app') 
.directive('instalmentsBox', ['InstalmentService', function(InstalmentService) { 
    return { 
     templateUrl:'scripts/directives/contracts/instalments-box.html?v='+window.app_version, 
     restrict: 'E', 
     scope: { 
      selectedcontractguid: '=' 
     }, 
     controller: function($scope) { 
      console.log($scope.selectedcontractguid); 
     } 
    } 
}]); 

console.log output

+0

你是如何在控制器中设置'instalment.contract.guid'? –

回答

4

试试这个可看$帮你出:

angular.module('app') 
.directive('instalmentsBox'['InstalmentService', function(InstalmentService) { 
    return { 
    templateUrl:'scripts/directives/contracts/instalments-box.html?v='+window.app_version, 
     restrict: 'E', 
     scope: { 
      selectedcontractguid: '=selectedcontractguid' 
     }, 
     controller: function($scope,$watch) { 
      $scope.$watch('selectedcontractguid', function (watch) { 
      console.log(watch); 
      }) 
     } 
    } 
}]); 
+0

感谢它为我工作,请你解释一下。为什么我必须观看它? – danyal14

+0

有时在angularJs'$ scope'中创建一个对象的多个实例,所以'$ watch'可以监视所有这些实例。因此很多时候你需要注意指令中的对象 –

+0

感谢细节:) – danyal14