搜尋

首頁  >  問答  >  主體

angular.js - 請問angularjs裡關於controller之間通訊問題

我在做一個問答系統,其中有一個問題單頁面,列出問題信息,然後列出問題下的回答列表。我給這個問題單頁用了 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這個變數。請問這個情況我該怎麼實現啊?是不是方案不對?

仅有的幸福仅有的幸福2741 天前528

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默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
        }
    })

    回覆
    0
  • 取消回覆