代码之家  ›  专栏  ›  技术社区  ›  Nicoleta Wilskon

旧值更改时动态设置值

  •  2
  • Nicoleta Wilskon  · 技术社区  · 6 年前

    我有个功能 mycredits(); 以获得可用的学分数。我必须显示为我的通知,当我做某些操作,如添加用户或提供用户,我的信用将得到减少。但现在我导航到一个页面到另一个页面只有这是工作的,在同一个页面的信用值没有得到刷新。

    $scope.mycredits = function(){
        $scope.totalCredits = response.json.response.data.totalcredits;
    }
    
    $scope.addUser = function(){
    if(statuscode == 0){
    $scope.mycredits();
    }
    }
    

    我的HTML:

         <a href="#/credits">
      <i class="fa fa-money"></i> 
    <span>CREDITS</span>
     <span class="creditBlock" >{{totalCredits}}</span> 
        </a>
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Shashank Vivek    6 年前

    假设从你的情况来看, 你一个人换信用卡 controller &您正在显示 credit 另一个中的值更改 控制器 .

    尝试发射 events 从控制器 你在哪里改变信用价值

    $scope.mycredits = function(){
      $scope.totalCredits = response.json.response.data.totalcredits;
      $rootScope.$emit('credit-changed',$scope.totalCredits);
    }
    

    在另一个控制器中显示 credits ,听以下事件:

    $rootScope.$on('credit-changed',function(event,data){
        $scope.credit = data;
    })
    

    Check this plunkr

        2
  •  1
  •   Sravan    6 年前

    分配, totalCredits 使用 $rootScope.totalCredits 而在 html 使用相同的 {{totalCredits}} 它将在所有领域发挥作用 controllers

    控制器:

    $scope.credits = {};
    
    $scope.mycredits = function(){
        $rootScope.totalCredits = response.json.response.data.totalcredits;
    }
    
    $scope.addUser = function(){
        if(statuscode == 0){
            $scope.mycredits();
        }
    }
    

    HTML:

    <a href="#/credits">
        <i class="fa fa-money"></i> 
        <span>CREDITS</span>
        <span class="creditBlock" >{{totalCredits}}</span> 
    </a>
    
        3
  •  0
  •   OBender    6 年前

    有三个可能的原因/解决方案

    1. 您需要添加一个$watch,以便在值更改时获得一个钩子 可以找到更多信息 here
    2. 更新更多信息后需要激活摘要循环 here
    3. 也许最好不要用手表来做这样的功能,而是发射一个 event