怎么了,第一次工作

时间:2014-03-14 09:13:30

标签: angularjs

指令:

'use strict';
var foodMeApp = angular.module('foodMeApp', ['ngResource', 'breeze.angular.q']);

foodMeApp.directive('angularReleases', function(){
    return {
    restrict :'EA',
    link : function($scope, $http){
        $http.get('http://api.github.com/repos/angular/angular.js/commits')
            .success(function(commits) {
                $scope.commits = commits
            })

    },
    template : '<ul>'+
                 '<li ng-repeat="commit in commits">'+
                 '{{ commit.commit.committer.date | date }}'+
                 '<a ng-href="https://github.com/angular/angular.js/commit/{{commit.sha}}">{{ commit.sha }}</a>'+
                 '{{ commit.commit.message }}'+
                 '</li>'+
                '</ul>'
    }

});

在视图中:

<angular-releases />

并且文件包含在angular.js文件之后的index.html文件中,它第一次起作用,之后,它显示错误:

enter image description here

任何机构都可以向我推荐一些关于如何分析/回溯错误的技巧/提示,比如这个错误我只能理解&#39; $ http.get(...)未定义&#39;。休息别人我不知道。

2 个答案:

答案 0 :(得分:1)

您需要在指令中注入$ http:

foodMeApp.directive('angularReleases', function($http){

答案 1 :(得分:1)

您应该将$ http注入指令

foodMeApp.directive('angularReleases',['$http', function($http){
    return {
    link : function($scope){
    },    
}]);

你的主要问题是链接函数的第二个参数是element,它没有get方法。

link采用具有以下签名的函数,function link(scope, element, attrs) { ... }其中:

  • scope是一个Angular范围对象。
  • element是此指令匹配的jqLit​​e包装元素。
  • attrs是一个哈希对象,具有标准化属性名称及其对应属性值的键值对。