我正在使用angularjs,并有以下HTML:-
<div ng-app="App">
<div ng-controller="AppCtrl">
<products></products>
</div>
</div>
和我的js看起来像这样:-
var app = angular.module('App', []);
app.controller("AppCtrl", function($scope, $http) {
$http.get('/api/products')
.then(function(res) {
$scope.products = res.data;
});
});
app.directive("products", function () {
return {
restrict: "E",
template: "<h1>Products</h1><ul><li ng-repeat='product in products'>{{product.Name}} - <em>{{product.Category}}</em></li></ul>",
};
});
这工作得很好,但我不确定指令如何知道控制器在模板呈现结果之前加载了数据。所以我的问题是:-
在这种情况下使用$http.get
的推荐方法是什么(最好解释一下),如果不是,那么推荐的方法是什么?
我认为这是$http.get
的一个很好的使用。在一天结束的时候,它只是一个做ajax请求的工具。
你的问题似乎源于你担心你的指令会在不同的情况下神秘地中断,这是可以理解的。关键是要理解数据绑定是Angular的秘密武器。
一种思考方式是,Angular编译所有的东西,然后把它们扔进一个事件/摘要循环。因此,它能够检测依赖项,监视变量的更改,并在这些变量更改时调用依赖方法(例如products指令)。
Angular指南为进一步理解提供了很好的概念图,它在这里:http://docs.angularjs.org/guide/concepts