0

这是我的两个指令。我基本上想在他们之间分享范围。然而,我得到一个未定义的$http错误。我知道我需要放在$http某个地方,但是在哪里呢?

aresAnalytics.directive('market', function($http) {
    return {
        restrict: 'E',
        controller: function ($scope, Data) {
            $scope.data = Data;
        },

        link: function(scope, element, attrs) {
            element.bind('click', function() {

                console.log("A1 " + attrs.market);

                scope.temp = attrs.market;

                $http.get('get_markets').success(function(markets) {
                    Data.markets =  markets;
                });

            })
        }
    }
});

aresAnalytics.directive('events', function($http) {
   return {
       restrict: 'E',

       controller: function ($scope) {
           scope = $scope;
       },


       link: function(scope, element) {

           element.bind('click', function() {
               console.log(scope.temp);
           });

       }
   }
});

HTML:

    <market ng-repeat="market in data.markets" market="{{ market }}">
        {{ market }}
    </market>

另外,我认为我这样做的方式

 $http.get('get_markets').success(function(markets) {
        Data.markets =  markets;
});

不正确,我可以用它代替什么。

而且,我应该改用 Isolate Scope '@' 吗?那会是什么样子?

感谢您阅读本文!

4

3 回答 3

0

问题在于您的依赖注入。尝试这个:

aresAnalytics.directive('market', ['$http', function($http) {
    // (you code)
}]);

或者如果您不使用代码缩小器/丑化器:

aresAnalytics.directive('market', function($http) {
    // (you code)
});
于 2013-09-17T12:36:01.997 回答
0
于 2013-09-17T12:36:20.387 回答
0

我不知道,但我只需将 a 附加$parent到我的范围以始终使用父范围。(例如使用scope.$parent代替scope)。

参考:https ://github.com/angular/angular.js/wiki/Understanding-Scopes

于 2013-09-19T16:17:31.657 回答