当前位置: 首页 > 面试题库 >

如何在AngularJS指令中访问全局js变量

丘向荣
2023-03-14
问题内容

首先,我检查了一下,但没有发现涉及我的问题的文章。

如何在angularJS内置指令中访问预定义的js全局变量?

例如,我在 <script>var variable1 = true; </script>

然后我写一个AngularJS指令:

<div ng-if="variable1">Show some hidden stuff!</div>

这实际上是行不通的。

然后我得知我应该使用 ng-init

所以我在其他地方写了代码

<div ng-init = "angularVariable1 = variable1"></div>

而且这显然不能正常工作……这就像一个恶性循环。您需要访问预定义的js全局变量,然后需要使用ng-init;为了使用ng-init,您需要访问全局变量。

有什么特别的方法吗?


问题答案:

我创建了一个有效的CodePen示例,演示了如何在AngularJS中正确执行此操作。Angular$window服务应该用于访问任何全局对象,因为直接访问window会使测试更加困难。

HTML:

<section ng-app="myapp" ng-controller="MainCtrl">
  Value of global variable read by AngularJS: {{variable1}}
</section>

JavaScript:

// global variable outside angular
var variable1 = true;

var app = angular.module('myapp', []);

app.controller('MainCtrl', ['$scope', '$window', function($scope, $window) {
  $scope.variable1 = $window.variable1;
}]);


 类似资料:
  • 我在下面定义了一个全局js变量(@Url是ASP.Net MVC html帮助程序,它将转换为字符串值): 如何访问angular2组件中的rootVar?我曾经在Angular1.5中使用窗口服务,在angular2中有类似的方法吗? 具体来说,我想使用该rootVar变量来帮助在该组件中生成templateUrl:

  • 问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go

  • 问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打

  • 问题内容: 我有一个main.go文件,其中有: 在我要声明,可在我的应用程序的任何地方访问的全局变量。有可能吗?我试过了: 但是,即使在同一包中,我也无法访问变量。 问题答案: 在顶层声明变量-在任何函数之外: 由于变量的名称以大写字母开头,因此在导入定义变量的包并使用包名对其进行限定时,变量将在当前包中通过其名称可用-在任何其他包中都可用。 这是另一个示例(同样在Go游乐场中:https :

  • 问题内容: 我有这个: 我如何才能实际修改全局变量g_c? 问题答案: 通过在访问它的函数中声明它: 在Python文档说这个,有关声明: 全局语句是一个声明,适用于整个当前代码块。

  • 如果我在我的main.js文件中有一个全局变量,我希望可以在由webpad捆绑到同一个构建/bundle.js中的打字稿文件中访问它,我该怎么做?我不能像我想象的那样直接访问它(最后它们在同一个捆绑包中)。我已经阅读了导出/导入/要求,但找不到如何在webpad捆绑包的上下文中应用它。