2016-02-21 112 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