【问题标题】:Multiple Expression in Angular ClickAngular Click 中的多个表达式
【发布时间】:2015-10-01 20:29:46
【问题描述】:

我将两个表达式放在 Angular ngClick 指令中。为什么 $scope.refresh 不 = Date.now()?它只做某些类型的表达吗?

data-ng-click="$scope.visible = !$scope.visible; $scope.refresh = Date.now()"

这不是关于如何执行多个表达式的问题,而是只计算某些表达式的问题。

【问题讨论】:

  • 为什么不将其传递给执行此逻辑而不是内联的函数?
  • 不推荐在 html 中做 Js 功能
  • 我选择内联逻辑是因为它是一段示例代码,可以复制并粘贴到我们的代码样式指南中。这是我遇到的,但不知道它无法评估。

标签: javascript angularjs


【解决方案1】:

您不必在视图中引用 $scope。我建议在一个函数中做这个操作:

data-ng-click="onClick()"

在控制器内部:

$scope.onClick = function(){
    $scope.visible = !$scope.visible; 
    $scope.refresh = Date.now();
}

【讨论】:

  • 我选择内联逻辑是因为它是一段示例代码,可以复制并粘贴到我们的代码样式指南中。这是我遇到的事情,但我不知道它无法被​​评估。我想避免将该函数添加到每个使用该代码的控制器中。
  • 有聪明的方法在每个控制器中做同样的事情,而无需手动复制/粘贴它;)
  • 是的,我想我可以做一个指令来做。
  • 我认为你不应该看指令里面的东西,也许更好的控制器继承,但我不是专家。 google 一下,祝你好运!
【解决方案2】:

我相信你不能在角度表达式中使用Date

您应该在作用域/控制器上创建一个函数来处理单击事件,或者创建一个返回当前时间的函数并使用它而不是 Date.now()

【讨论】:

【解决方案3】:

你不必在html绑定中调用$scope,你只需要属性名:

HTML:

data-ng-click="visible = !visible; refresh = Date.now()"

JS 控制器:

.controller('myCtrl', function ($scope) {
    $scope.visible = true;
    $scope.refresh = '';
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2014-07-23
    • 2014-08-10
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多