Javascript AngularJS中的服务定义

Javascript AngularJS中的服务定义,javascript,coffeescript,angularjs,Javascript,Coffeescript,Angularjs,给定该服务(仅在服务器上获取json) 假设我在控制器中使用该服务: ProductListController = ($scope,$rootScope,$http,$filter,DataTypeService)-> ### EN : manage product list display FR : gère l'affichage de la liste de produits ### $rootScope.types =

给定该服务(仅在服务器上获取json)

假设我在控制器中使用该服务:

ProductListController = ($scope,$rootScope,$http,$filter,DataTypeService)->
    ### 
        EN : manage product list display 
        FR : gère l'affichage de la liste de produits 
    ###
    $rootScope.types = DataTypeService()
$rootScope.types被反复使用,现在问题很明显: -当我呈现页面时,json还没有成功获取,所以我的转发器中没有显示任何内容

我如何设计我的应用程序,以便在服务器返回内容时模板会自动更新?谢谢

模板:

 <span ng-repeat='type in types'>
        <a href='javascript:void 0;' ng-click="addToSelectedTypes(type.id)" class='label trans' style="font-size: 15px" ng-class="getSelectedClass(type.selected)" >{{type.name | capitalize }}</a>
      </span>

问题是您从服务返回的函数返回了
self.\u数据。返回整个
self
对象(从
DataTypeService
工厂返回的函数),并调整视图以使用
类型。\u data
。然后标记应该自动更新

或者,您可以制作一些预加载程序,在没有可用数据时显示:

<div class="preloader" ng-show="!types._initialized"></div>

您的中继器将隐藏一段时间(并在正确加载数据时显示):



@camus返回
self.\u data
的方式是一个问题,因为您只是返回空数组实例。一旦提取完成,它将用一个新的数组实例替换
self.\u data
实例,但应用程序的其余部分将永远看不到该替换;应用程序的其余部分仍将引用旧的空数组实例。按照zbynour建议的方式进行操作可确保应用程序始终在查看
类型中的最新值。_data
aka
self._data
字段,即现在里面真正包含的内容。嘿,你们知道吗,你们都非常聪明,所以角度可以看到像这样的对象?不管怎么说,这很聪明,而且棱角分明。是的@Supr完美地描述了它。问题是你必须允许angular能够观看。
<div class="preloader" ng-show="!types._initialized"></div>
<div ng-show="types._initialized">
    <span ng-repeat="type in types._data">
        <a href="javascript:void 0;">{{type.name | capitalize }}</a>
    </span>
</div>