【问题标题】:Convert Javascript function to AngularJS function将 Javascript 函数转换为 AngularJS 函数
【发布时间】:2016-06-02 12:27:38
【问题描述】:

我编写了一个在两个 div 元素之间切换的简单 javascript 函数。像这样:

function goToResults() {
    document.getElementById("services").style.display = "none";
    document.getElementById("results").style.display = "block";
}

在学习 Angular 时,我想将其转换为 app.js 中的 Angular 函数。我可以执行以下操作吗?

$scope.goToResults = function () {
    $scope.getElementById("services").style.display = "none";
    $scope.getElementById("results").style.display = "block";
}

谢谢!

【问题讨论】:

  • 使用指令进行 DOM 操作。检查ng-style
  • 请查看文档左侧菜单中的所有核心指令。有很多可以做到这一点... ng-style ... ng-class ... ng-if .. ng-show ... ng-hide ... ng-switch .... 都被驱动了根据您的数据模型

标签: javascript jquery angularjs angularjs-scope


【解决方案1】:

您提供的这段代码存在一些问题。

首先,没有 AngularJS 的唯一功能。它们与任何其他 javascript 函数相同。如果你想在 AngularJS 的范围内使用“javascript”函数,你可以这样做:

function goToResults() {
   ...
}

$scope.goToResults = goToResults;

其次,在控制器内处理 DOM 操作被认为是一种不好的做法。改用指令。

第三,据我了解,您希望根据某些事件显示或隐藏 div。有一些内置功能可以做到这一点(ng-show、ng-hide、ng-if)。

您似乎缺乏一些关于 Javascript 和 AngularJS 的基础知识,我建议您阅读 Angular 自己的文档 https://docs.angularjs.org/tutorial 给出的示例教程

【讨论】:

  • 是的,我对 AngularJS 比较陌生,我会多看一些教程
  • AngularJS 拥有整个 javascript 生态系统中最大的社区之一,那里有很多很好的教程。你也可以在 youtube 上搜索一些端到端的教程。祝你好运!
【解决方案2】:

技术上可以使用

$scope.goToResults = function () {
    document.getElementById("services").style.display = "none";
    document.getElementById("results").style.display = "block";
}

但是,这并不是一种非常“有角度”的方式。 this question 的答案中描述了更“角度”的路线。一般来说,引用特定元素不是“角度”的方式;相反,它寻求有一组 javascript 实用程序可供(已处理的)HTML 使用,例如指令,它们本质上是用于 HTML 的新元素或属性。指令的实现与使用这些属性或元素修改的元素没有直接耦合,这使得 Angular 更加可重用,并且在我和许多其他人的意见中,一旦你习惯了它就更容易阅读和编写.

【讨论】:

  • “最直接正确的方法” ...不,不是
  • 不行吗?我很清楚这样做是不好的做法,但这是与 OP 最相似的做法,不是吗? (除了普通的 JS,但这不是一个合适的答案)
  • 那么你为什么要提供第一个解决方案是不好的做法并声明它是“正确”。看你自己的答案,只看第一行和代码
  • 正确的;这只是不好的做法。您自己称其为“解决方案”。我已经对其进行了编辑,以更清楚地表明它是一个 kluge。
猜你喜欢
  • 1970-01-01
  • 2018-12-16
  • 2022-01-04
  • 2016-11-26
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多