0
場景: 我有兩個控制器,它們使用一個服務,第一個控制器可以調用搜索方法,並在服務加載數據時獲得結果,其次只能通知服務加載數據。當單個服務加載數據時通知多個控制器
這裏我的代碼:
app.factory "searchService", ($resource, $q, $log) ->
resource = $resource("//localhost:8001/data/search/1")
searchSuccessDef = $q.defer()
searchSuccess: searchSuccessDef.promise
search: (scope, term) ->
def = $q.defer()
resource.get(
((content) ->
$log.info content
searchSuccessDef.notify()
def.resolve(content)
),
((response) ->
$log.warn response
def.reject(response)
)
)
def.promise
///
app.controller "navpanelController", ($scope, searchService) ->
$scope.search = (term) ->
searchResult = searchService.search(term)
searchResult.then (res) ->
console.log "!!!"
$scope.result = res
///
app.controller "contentController", ($scope, $q, searchService) ->
searchService.searchSuccess.then (content) ->
console.log "---"
但是,這並不工作,因爲searchSuccessDef.notify()
不會援引notifyer searchService.searchSuccess.then (content) ->
,但如果不是我用searchSuccessDef.resolve()
,這起火災的承諾一次。
這就是問題所在。 謝謝!
謝謝,覺得自己arrgh,花了2個小時,這種咖啡的的方式:) – baio
我的不好:(我修好了。 – Chandermani