我在做一個問答系統,其中有一個問題單頁面,列出問題信息,然後列出問題下的回答列表。我給這個問題單頁用了 QuestionCtrl 控制器,然後用http.get獲取answers,用ng-repeat列出每個answer。然後每個answer我都用相同的控制器AnswerCtrl來控制, 其中每個answer都有個讚的功能,一開始獲取到answer時,我會把answer.prised_counter獲取到顯示,也就是回答當前被讚的數量。然後我給讚的元素a標籤上加上ng-click去執行讚的操作,這時候調用的是AnswerCtrl裡的function,讚了之後,我想要把answer.prised_counter+1,但是因為ansewr是從QuestionCtrl裡的answers裡讀出來的,所以在AnserCtrl裡我修改不了ansser.prised_counter這個變數。請問這個情況我該怎麼實現啊?是不是方案不對?
習慣沉默2017-05-15 17:01:16
這種情況一個QuestionCtrl足以搞定,沒有必要再建立一個AnswerCtrl,反而把問題複雜化了
如果一定要answerCtrl的話,可以使用$emit,$brodcast來實現父子作用域的通訊
例子
<ul ng-controller='questionCtrl'>
<li ng-repeat="item in list" ng-click='like(item)'></li>
</ul>
app.controller('questionCtrl',function(){
$scope.list=[
{count:10,content:"这里是答案1"},
{count:12,content:"这里是答案2"}
]
$scope.like=function(item){
//answer function
}
})