我有書籍服務來搜索書籍。 大部分時間服務,例如只有20本書。服務人員如何知道注入它的控制器何時銷燬?
我希望服務能夠在控制器接收數據後更改屏幕上圖書的屬性。
例如: 我有一個控制器,顯示20本書(從搜索查詢和限制屬性)的列表。
我想,該服務將能夠改變控制器拿到了書,控制器獲得了數據之後(實時變化)
controller($scope,bookService){
$scope.data=bookService.getList(query,20)
}
service(function(){
var dataBindedToController=[]
return{
getList:function(query,limit){
dataBindedToController.push([{name:'book1'},{name:'book2'}])
return dataBindedToController[dataBindedToController.length-1]
}
}
})
在每一個時間控制器上面的例子中要求的書籍列表我通過引用將返回的數據添加到服務中。之後,例如,如果我在服務:dataBindedToController[0][2].name='Moshe'
,它會自動更新控制器。控制器$scope.data
=== dataBindedToController[0]
現在的問題是:當控制器已經銷燬,現在該如何服務,並從它的數組中刪除bindedData?
我想保持控制器儘快(儘可能簡單)。
又如: 一個工作的jsfiddle,使用綁定技術,以更新的服務的計數器,控制器獲得了數據之後: https://jsfiddle.net/tLLtn45j/
var app=angular.module('app',[])
.controller('a',function($scope,service){
$scope.data=service
})
.service('service',function($interval){
var data={counter:3}
$interval(function(){data.counter++},500)
return data
})
的問題是:當控制器被破壞時,服務現在如何停止更新計數器
如果多個控制器同時使用該服務怎麼辦? –
我會將每個控制器數據添加到此數組中:'dataBindedToController'。然後一個控制器銷燬,我將拼接數組,刪除不再nessecerey的數據 – Aminadav