2015-06-21 34 views
2

我有一個指令,它確實HTTP請求,返回數據和改變參數的值,指令變化並不反映我的網頁控制器上

的問題是,在指令控制器返回的數據反映HTML,但不反映在頁面控制器上! 我嘗試添加scope.apply(),但我有消化週期已經運行的錯誤..

你能不能指點

JS

app.directive('customDirective', function() { 
    return { 
     restrict: 'E', 
      scope : { 
       pObject  : "=", 
       url   : "@" 
      } , 
     replace  : true,     
     controller : ['$scope','$element', '$http', function($scope, $element, $http) { 

      function requestData() { 
       urlParams = []; 
       urlParams['x'] = parseInt($scope.pageObj.x); 
       urlParams['y'] = parseInt($scope.pageObj.y); 

       $http.get($scope.url,{ params : urlParams}) 
        .success(function (data) { 
         if (typeof data.data !=='undefined' && data.data.length > 0) { 
          $scope.pObject.data = data.data; 
          $scope.pObject.x = data.y; 
          $scope.pObject.y = data.y; 
         } 
        }); 
      } 

      if (typeof $scope.pObject.data !== 'undefined' && $scope.pObject.data.length==0) { 
       requestData(); 
      }    
} 
}); 
+0

當你在'directive'中聲明'scope:{...}'時,控制器中的'$ scope'將變成一個**隔離範圍**。因此,您的頁面控制器無法在**隔離範圍**中訪問該變量。我更喜歡在你的指令控制器中注入'$ attr',然後從$ attr'獲得變量'pObject'和'url'。 –

+0

@StevenWeng「=」意味着綁定:)即我的變量必須更新控制器..我不是說的指令基礎,,,我想要一個孤立的範圍,我想添加參數作爲本地範圍屬性.. – sisimh

回答

-1

劑量的指令有pObject屬性,此屬性指向頁面控制器作用域上的屬性。例如:

<custom-directive p-object="controller Property Here"></custom-directive> 

請關注我如何在指令中添加pObject屬性。有關爲什麼我這樣寫的更多信息。請閱讀標準化部分和在角度文檔中分離指令的範圍。 Creating Custom Directives

+0

這是不作爲答案的答案不能基於假設,我打電話給我的指示錯誤...如果你懷疑你可以問我添加代碼...無論如何,我打電話與正常化,並充分意識到事實上,它是孤立的範圍..我添加本地範圍屬性,我希望我的對象是兩種方式的約束 – sisimh

+0

我很抱歉。那麼你可以用完整的代碼修改你的問題,或者創建一個plunker並提供鏈接? – Ali

相關問題