Javascript 为什么';这个角度代码/指令似乎正在执行吗?
所有链接都没有断开。两个console.log之间的Javascript似乎都没有执行。我一直在努力解决这个问题,但没有发现任何问题。有线索吗 library.jsJavascript 为什么';这个角度代码/指令似乎正在执行吗?,javascript,angularjs,angularjs-directive,angularjs-controller,Javascript,Angularjs,Angularjs Directive,Angularjs Controller,所有链接都没有断开。两个console.log之间的Javascript似乎都没有执行。我一直在努力解决这个问题,但没有发现任何问题。有线索吗 library.js console.log("loaded js"); var app = angular.module("Library", []) .factory("libraryLoader", ["$http", function ($http) { function load(done) {
console.log("loaded js");
var app = angular.module("Library", [])
.factory("libraryLoader", ["$http", function ($http) {
function load(done) {
$http.get('http://localhost:3000/api/mycollection')
.success(function(data, status, headers, config){
console.log (this);
done(null, data);
})
.error(function(data, status, headers, config){
console.log(status);
var ordersErr = new Error(data);
ordersErr.code = status;
done(ordersErr);
});
}
return {
load: load
};
}])
.directive("library", [function (){
return {
restrict: 'E',
templateUrl: 'http://localhost:3000/views/library.html',
controller: ["libraryLoader", "$q", '$http', function (libraryLoader, $q, $http) {
console.log("in directive controller");
var ctlr = this;
libraryLoader.load(function (err, result) {
if (err) {
ctlr.isLoaded = false;
}
else {
ctlr.data = result;
console.log(ctlr.data);
ctlr.isLoaded = true;
}
});
}],
controllerAs: "ctlr"
};
}])
.controller("LibraryController", ["$scope", function ($scope) {
var ctlr = this;
}]);
console.log(app);
library.hbs
You are logged in as {{user.username}}.
<div id="body ng-app="Library">
<div id="tracks">
<input class="search" placeholder="Search" />
<button class="sort" data-sort="name">
Sort by name
</button>
<library></library>
</div>
</div>
<script src="http://localhost:3000/bower_components/list.js/dist/list.min.js"></script>
<script src="http://localhost:3000/bower_components/angular/angular.min.js"></script>
<script src="http://localhost:3000/js/lib/library.js"></script>
您以{{user.username}身份登录。
可能是因为你的id=“body
属性缺少结束引号?除此之外,您不需要将LibraryController
声明为控制器,也不需要在指令模板中使用ng controller
。而libraryLoader
可能更适合作为服务
。为什么要将回调传递给load
,而不是使用承诺?@jlowcs-Ah,这两种方法都解决了这个问题。谢谢你的帮助。
<table>
<thead>
<tr>
<td>Name</td>
<td>Genre</td>
</tr>
</thead>
<tbody class="list" ng-controller="LibraryController as ctlr">
<tr ng-repeat="track in ctlr.data">
<td class="name">{{track.t.properties.name}}</td>
<td class="genre">{{track.t.properties.genre}}</td>
</tr>
</tbody>
</table>