对数据的指令更改没有反映在我的页面控制器上

时间:2015-06-21 08:40:27

标签: angularjs angularjs-directive angularjs-scope

我有一个指令,它执行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();
            }             
}
});

1 个答案:

答案 0 :(得分:-1)

您的指令具有pObject属性,此属性指向页面控制器范围上的属性。例如:

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

请关注我如何在指令中添加pObject属性。有关我为什么这样写它的更多信息。请阅读角度文档中的规范化部分和隔离指令的范围Creating Custom Directives