目前,我的应用程序有一个控制器,它接收一个JSON文件,然后使用"ng-repeat"迭代它们.这一切都很好,但我也有一个需要迭代相同JSON文件的指令.这是一个问题,因为我不能在一个页面上两次请求相同的JSON文件(我也不想,因为它效率低).如果我更改其中一个JSON文件的文件名,指令和控制器请求并迭代JSON数据就好了.
我想知道的是:将控制器的JSON请求形成的数组传递给指令的最佳方法是什么?当我已经通过我的控制器访问它时,如何将数组传递给我的指令并进行迭代?
调节器
appControllers.controller('dummyCtrl', function ($scope, $http) {
$http.get('locations/locations.json').success(function(data) {
$scope.locations = data;
});
});
Run Code Online (Sandbox Code Playgroud)
HTML
<ul class="list">
<li ng-repeat="location in locations">
<a href="#">{{location.id}}. {{location.name}}</a>
</li>
</ul>
<map></map> //executes a js library
Run Code Online (Sandbox Code Playgroud)
指令(当我使用除locations.json之外的文件名时工作,因为我已经请求过一次
.directive('map', function($http) {
return {
restrict: 'E',
replace: true,
template: '<div></div>',
link: function(scope, element, attrs) {
$http.get('locations/locations.json').success(function(data) {
angular.forEach(data.locations, function(location, key){
//do something
});
});
Run Code Online (Sandbox Code Playgroud) javascript json angularjs angularjs-directive angularjs-ng-repeat
好的,这里有三个问题.他们都很漂亮,但我只是想让你们的家伙对他们有所了解.
1)在编写jquery脚本时,我应该包含类型吗?
IE:
<script type="text/javascript" charset="utf-8">
//Jquery here
</script>
Run Code Online (Sandbox Code Playgroud)
或者只是一个可以接受的开始和结束脚本标签?
2)我知道在关闭正文标记之前包含所有JQuery是一种最佳实践,但这是否也意味着我在正文之前包含了实际的jquery.js文件?
3)如果我的页面依赖于jquery来查看它应该是什么(不仅仅是动作事件/ ajax/etc).例如,我正在使用一个名为datatables的jquery插件,它通过我指定的数据库进行排序并自动分页/排序/ etc.我发现因为我在DOM加载后包含了所有脚本,所以在我的datatables.js文件和相应的构造函数加载之前,我看到了数据表的原始格式.在我的身体加载之前包含它是否可以接受,这样就不会发生这种情况?