javascript - 动态访问方法中的 Controller 变量

标签 javascript angularjs ionic-framework

我有一个 Angular Controller ,其中有一个巨大的表格拆分成卡片。因此,每次用户选择标题时,该部分的卡片都会显示(例如姓名部分、地址部分、联系数据、大学数据、工作数据等)。

只有两个部分的相关代码是这样的:

angular.module('controllers', [])
.controller('EditUserController', function($scope, $state) {

  $scope.mustShowName = false;
  $scope.mustShowContact = false;

  $scope.toogleShowContact = function() {
    if ($scope.mustShowContact) {
      $scope.mustShowContact = false;
    } else {
      $scope.mustShowContact = true;
    }
  };
  $scope.toogleShowName = function() {
    if ($scope.mustShowName) {
      $scope.mustShowName = false;
    } else {
      $scope.mustShowName = true;
    }
  };
});

但是有各种各样的卡片。有一种重构方法是这样的吗?:

$scope.toogleSection = function(section) {
  if (section) {
    section = false;
  } else {
    section = true;
  }
};

...

$scope.toogleSection($scope.mustShowName);

如果我尝试它,它不起作用并且不会抛出错误,所以我认为它只是复制变量而不是引用原始变量。

最佳答案

当您请求 $scope.mustShowName 时,您只是获取值而不是属性的引用 - 即 true 或 false。而是将部分名称作为字符串传递,并使用该名称引用范围内的属性。

顺便说一句 - 一个更好的主意是创建一个封装行为的指令,并帮助您保持 DRY .

$scope.toogleSection = function(sectionName) {
  if ($scope[sectionName]) {
    $scope[sectionName] = false;
  } else {
    $scope[sectionName] = true;
  }
};

$scope.toogleSection('toogleShowName');

关于javascript - 动态访问方法中的 Controller 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710547/

相关文章:

javascript - 图片库使用 php css 和 javascript

html - 当变量变为真时,angular js 添加 css

javascript - AngularJS 返回一个导致 'then' 未定义的 promise

angularjs - Angular JS Touch Slider 与 Ionic 框架一起使用时显示 NaN 错误

javascript - JQuery AJAX 轮询语法

javascript - 如果是逗号,则从字符串中删除第一个字符

javascript - 将多个选择发送到服务器

javascript - 根据 $http 的响应更改按钮颜色

ionic-framework - 为什么我的数据保存在 WebSQL 而不是 IndexedDB 中? ( ionic )

javascript - Angular $http.get 自动将 int 转换为 string