2014-11-03 37 views
2

我有以下服務的功能,將返回的數據,這是我想顯示(注意,該數據可以隨時改變):AngularJS:最佳實踐將數據傳遞到模板

myService.getData(); // Returns an array 

我有使用服務,因爲我也需要這些數據在其他控制器/服務中。

現在我不確定,最好的實踐是什麼,也將數據顯示在模板中。我所做的,就是:

例1

<li ng-repeat="item in myService.getData()"> 
    {{item.name}} 
</li> 

它的做工精細,但它是最好的做法?

我也嘗試以下操作:

例2

// In my controller: 
$scope.data = myService.getData(); 

// In the template 
<li ng-repeat="item in data" ng-controller="myCtrl"> 
    {{item.name}} 
</li> 

這不起作用(在頁面上加載的數據是獲得一次到$ scope.data任何更新都將被忽略)。我想我可以使用$ watch(觀看myService.getData())。但是我猜這比較慢。

您認爲如何?我可以在模板中調用服務嗎(如示例1)?

非常感謝!

+0

的'getData'方法的代碼片段將是有益的 – 2014-11-03 15:49:39

回答

0

以此作爲第二個例子(最佳實踐):

// In my controller: 
$scope.service= myService 

// In the template 
<li ng-repeat="item in service.getData()" ng-controller="myCtrl"> 
    {{item.name}} 
</li> 
+0

是的,這是(已經)我使用的到底是什麼。我只是不確定這是否有效,或者我必須使用一些不同的方法。 – Tream 2014-11-03 15:52:19

+0

這是最好的做法。你可以毫無疑問地使用它。 – 2014-11-03 15:53:56

+2

@MukundKumar是什麼讓你覺得這是最佳做法?什麼是'getData'使得AJAX請求,然後它將在每個摘要循環中被執行多次? – dfsq 2014-11-03 15:58:59