javascript - 需要在angularjs中动态创建一个函数

标签 javascript angularjs

我需要在 angularjs 中创建一个新函数,所以我做了如下所示的操作。我需要禁用angular tree control中的一些元素.

$scope.filterTreeOption = {
    dirSelectable: false,
    multiSelection: true,
    injectClasses: {
      "li": "injectedTreeLi"
    }
}

$scope.isFatalDisabled = false; $scope.isErrorDisabled = false; $scope.isWarnDisabled = false; $scope.isInfoDisabled = false; $scope.isDebugDisabled = false; $scope.isTomcatDisabled = false; $scope.isAgentDisabled = false; $scope.isSessionDisabled = false; $scope.isActivityDisabled = false;

// Another function here which changes above boolean property to true if needed.

var func = function(node) {
  var tmp = (node.label.indexOf("Fatal") !== 0 && $scope.isFatalDisabled) &&
  (node.label.indexOf("Error") !== 0 && $scope.isErrorDisabled) &&
  (node.label.indexOf("Warn") !== 0 && $scope.isWarnDisabled) &&
  (node.label.indexOf("Info") !== 0 && $scope.isInfoDisabled) &&
  (node.label.indexOf("Debug") !== 0 && $scope.isDebugDisabled) &&

  (node.label.indexOf("Tomcat") !== 0 && $scope.isTomcatDisabled) &&
  (node.label.indexOf("Agent") !== 0 && $scope.isAgentDisabled) &&
  (node.label.indexOf("Session") !== 0 && $scope.isSessionDisabled) &&
  (node.label.indexOf("Activity") !== 0 && $scope.isActivityDisabled);
  return tmp;
}

//and then I am trying to assign it to an already existing javascript object

$scope.filterTreeOption.isSelectable = func;

但这并没有生效。这是正确的方法还是我错过了一些东西。请帮忙。

最佳答案

您应该检查 indexOf 的值不是 0(字符串的第一个索引),而是 -1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

$scope.filterTreeOption = {
    dirSelectable: false,
    multiSelection: true,
    injectClasses: {
      "li": "injectedTreeLi"
    }
}

$scope.isFatalDisabled = false; $scope.isErrorDisabled = false; $scope.isWarnDisabled = false; $scope.isInfoDisabled = false; $scope.isDebugDisabled = false; $scope.isTomcatDisabled = false; $scope.isAgentDisabled = false; $scope.isSessionDisabled = false; $scope.isActivityDisabled = false;

// Another function here which changes above boolean property to true if needed.

var func = function(node) {
  var tmp = (node.label.indexOf("Fatal") !== -1 && $scope.isFatalDisabled) &&
  (node.label.indexOf("Error") !== -1 && $scope.isErrorDisabled) &&
  (node.label.indexOf("Warn") !== -1 && $scope.isWarnDisabled) &&
  (node.label.indexOf("Info") !== -1 && $scope.isInfoDisabled) &&
  (node.label.indexOf("Debug") !== -1 && $scope.isDebugDisabled) &&

  (node.label.indexOf("Tomcat") !== -1 && $scope.isTomcatDisabled) &&
  (node.label.indexOf("Agent") !== -1 && $scope.isAgentDisabled) &&
  (node.label.indexOf("Session") !== -1 && $scope.isSessionDisabled) &&
  (node.label.indexOf("Activity") !== -1 && $scope.isActivityDisabled);
  return tmp;
}

//and then I am trying to assign it to an already existing javascript object

$scope.filterTreeOption.isSelectable = func;

关于javascript - 需要在angularjs中动态创建一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599090/

相关文章:

javascript - 如何获取两个日期之间的确切月份数?

mysql - Angular.js put 请求因 Sails.js 和 mysql 数据库而失败

javascript - 将 angularjs 应用程序拆分为具有路由依赖项注入(inject)的组件

javascript - UnderscoreJS _.every 为空

javascript - 浏览器字体中每个字符的渲染像素宽度数据

JavaScript 在事件后返回

javascript - 如何在指令中以 Angular 方式使用 jQuery?

javascript - Angular ng-init 函数在指令后加载

javascript - ng-click 错误 : [$parse:syntax] Syntax Error: Token 'Object' is unexpected, 期待 []]

javascript - 无法读取父元素的 NodeName