指令:
'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文件中,它第一次起作用,之后,它显示错误:
任何机构都可以向我推荐一些关于如何分析/回溯错误的技巧/提示,比如这个错误我只能理解&#39; $ http.get(...)未定义&#39;。休息别人我不知道。
答案 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
是此指令匹配的jqLite包装元素。attrs
是一个哈希对象,具有标准化属性名称及其对应属性值的键值对。