为了账号安全,请及时绑定邮箱和手机立即绑定

在 angularjs 和 typecript 中绑定

在 angularjs 和 typecript 中绑定

MYYA 2021-10-29 16:44:14
我正在使用带有打字稿的旧版 angularjs 1.5。活动用户卡中的数据在父级更改时未更新家长<active-user-card active-users="response.activeUsers"></active-user-card>活跃用户卡export class ActiveUserCard {  activeUsers: number;  data: Array<IChartData>;  constructor() {    ........    ........    this.inactiveUsers = (totalUsers - this.activeUsers) || 0;    this.data = [      {name: "Active users",   y: this.activeUsers},      {name: "Inactive users", y: this.inactiveUsers}    ];    ........    ........  }}angular.module('tm')  .directive('activeUserCard', [function() {    return {      restrict: 'E',      scope: {        activeUsers: '<'      },      bindToController: true,      controller: ActiveUserCard,      controllerAs: 'auc',      templateUrl: "./active-user-card.html"    };  }]);
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

首先,如果直接在 HTML 中使用父数据,那么它会立即使用 Angular 的 $watch 反映出来。


但是在这里,您希望更改反映在组件的this.data变量中。您必须听取更改,然后更新 this.data。


$onChanges(changes) {

    if (changes.activeUsers&& changes.activeUsers.currentValue) {

      // update your code here

      // i don't know where totalusers are comigng in below but you just figure out.

       const inactiveUsers = (totalUsers - changes.activeUsers.currentValue) || 0;


       this.data = [

          {name: "Active users",   y: changes.activeUsers.currentValue},

          {name: "Inactive users", y: inactiveUsers}

      ];

    }

  }

我建议尝试重用代码。从构造函数和make方法中取出代码来设置以总用户和活动用户为参数的数据并制作数据。相同的方法应该从 $onChanges 钩子和 changes.activeUsers.currentValue 中调用。所以代码会很干净


谢谢


查看完整回答
反对 回复 2021-10-29
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信