我正在使用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
的方法(解释会很好),如果不是,那么建议的方法是什么?
答案 0 :(得分:2)
我认为这可以很好地利用$http.get
。在一天结束时,它只是一个执行ajax请求的工具。
看来你的问题源于担心你的指令会在不同情况下神秘地破裂,这是可以理解的。因此,关键是要理解数据绑定是Angular的秘密武器。
考虑它的一种方法是,Angular编译所有内容并将其抛入事件/摘要循环。因此,它能够检测依赖关系,监视变量的变化,并在这些变量发生变化时调用依赖方法(例如product指令)。
Angular指南在提供进一步理解的概念图方面做得很好,而且就在这里:http://docs.angularjs.org/guide/concepts