从AngularJS指令加载远程数据

时间:2014-03-24 15:29:25

标签: json angularjs angularjs-directive

我来自jQuery的背景,但我试图用我正在构建的天气网络应用程序学习AngularJS。我在页面顶部有4个选择框,其中包含城市列表。每个选择框对应于下面的天气容器,该容器显示所选城市的当前天气。

我正在使用天气容器的指令,如下所示。这是构建这个的正确方法吗?

<weather city="select1"></weather>
<weather city="select2"></weather>
<weather city="select3"></weather>
<weather city="select4"></weather>

当我从选择框#1中选择ATL时,它会在天气容器中为select1显示ATL。那部分有效。但现在我需要它去服务器并获取将在该指令中显示的天气数据。我有一个API工作,我可以传递ATL,它返回天气数据为JSON。这样做的正确角度方式是什么?我无法在指令中找到调用我的服务的地方,比如ui-router有resolve。感谢。

1 个答案:

答案 0 :(得分:0)

angular.module('yourApp')
    .directive('weather', ['$http', function ($http) {
        template: '<div data-ng-click="getWeather()">{{weatherData}}</div>',
        scope: {
            city: '='
        },
        controller: function(scope) {
            scope.getWeather = function() {
                $http.get('/your-weather-api?city=' + scope.city)
                    .success(function(data) {
                        scope.weatherData = data;
                    });
            }
        }
    }]);

这样的事情可能会奏效,但我认为这不是构建项目的最佳方式。您可以发布您的代码,或者最好是plnkr,我们可能能够提供更多帮助吗?

这是一个plnkr,显示了一个粗略的方法,可能比你之后更容易管理: http://plnkr.co/edit/XcjkfOpuiaasGWa3C0Lv?p=preview