指令之间的共享范围 - 缺少$ http

时间:2013-09-17 12:33:34

标签: javascript angularjs angularjs-directive

这是我的两个指令。我基本上想要分享它们之间的范围。但是,我得到一个未定义的$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'@'吗?这看起来怎么样?

感谢您阅读本文!

3 个答案:

答案 0 :(得分:0)

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

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

或者如果您不使用代码缩写器/ uglifiers:

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

答案 1 :(得分:0)

您需要像这样注入$http服务。

app.directive('something', function( $http ) { ... });

Angular Dependency Injection

要访问类似的属性,有很多方法,但这是一种简单的方法。

将html更改为

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

需要像这样解析

app.directive('something', function( $http, $parse ) { ... });

并获得您的属性

scope.temp = $parse(attrs.market)(scope);

这样你直接从范围获取它,而另一种方式,angular还没有呈现属性。

答案 2 :(得分:0)

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

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