0

我有一个控制器在指令设置范围之前发出 $http.get 请求。如何确保在控制器执行此操作之前首先设置所需的范围值?

我有一个指令...

<mydir host="'localhost:8080'" api="/myapi/bla=?asdf=123"/>

定义为 ...

myapp.directive('mydir', function() {

    return{

        restrict: 'E',
        templateUrl: 'scripts/partials/dillist.html', 
        link: function(scope, element, attrs){
            scope.host = attrs['host'];
            scope.api = attrs['api'];
        }

    }
});

我的服务..

.service('MyService',function($http, $q){

        return{

            getPageData: function(host, api){
                $http.get(host+ api)
                ///some more stuff
            }

        }
    }

但是,我的控制器在指令有机会将指令中的属性分配给范围之前执行服务方法。

// inside the controller //
MyService.getPageData($scope.host, $scope.api).then(function(res){
       ... some more code ..
    });
4

1 回答 1

0

使用当前架构解决此问题的最简单方法可能是将 getPageData 调用移动到作用域上的 $watch 函数。

像这样的东西:

$scope.$watch('[host,api]'), function() {
   if ($scope.host && $scope.api)
       MyService.getPageData($scope.host, $scope.api).then(function(res){
          ... some more code ..
       });
}, true);
于 2013-06-20T22:14:01.120 回答