我有一個指令,它確實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();
}
}
});
當你在'directive'中聲明'scope:{...}'時,控制器中的'$ scope'將變成一個**隔離範圍**。因此,您的頁面控制器無法在**隔離範圍**中訪問該變量。我更喜歡在你的指令控制器中注入'$ attr',然後從$ attr'獲得變量'pObject'和'url'。 –
@StevenWeng「=」意味着綁定:)即我的變量必須更新控制器..我不是說的指令基礎,,,我想要一個孤立的範圍,我想添加參數作爲本地範圍屬性.. – sisimh