angular.js - 请问angularjs里关于controller之间通信问题

查看:121
本文介绍了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这个变量。请问这个情况我应该怎么实现啊?是不是方案不对?

解决方案

这种情况一个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
    }
})

这篇关于angular.js - 请问angularjs里关于controller之间通信问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆