javascript - JavaScript 小部件必须等待 AngularJS 变量值
问题描述
我对 AngularJS 平台上的外部小部件集成有一些问题:
<div id="some_widget" param="{{value}}"></div>
<script src="/widget.js"></script>
小部件在第一次执行param = "{{value}}"
时将其视为字符串。使用超时可以解决问题,但并不优雅。像这样的使用ng-if
:
<script ng-if="value" src="/widget.js"></script>
也不工作。有任何想法吗?
解决方案
您可以在视图的控制器内使用手表(在注入 $scope 之后)来检查“值”何时不是未定义的(或为真,取决于具体情况)。检查后,您可以在文档中动态插入标记脚本并加载 widget.js。代码如下所示:
var app = angular.module('awesomeApp', []);
app.controller('awesomeController', function($scope){
$scope.$watch('value',function(newValue, oldValue) {
if(newValue != undefined) {
// load script dynamically using any method
var awesome_script = document.createElement('script');
awesome_script.setAttribute('src','/widget.js');
document.head.appendChild(awesome_script);
}
});
});
<html>
<head>
<!-- import the awesomeController.js file -->
</head>
<body ng-app="awesomeApp">
<div ng-controller="awesomeController">
<div id="some_widget" param="{{value}}">
</div>
</div>
</body>
</html>
希望能帮助到你。
推荐阅读
- java - 我想制作一个随机图像生成器,但它不起作用
- c# - unity上传播放器数据文本文件到服务器,需要一些引导格式
- rust - 如何声明包含任何类型的可反序列化/可序列化结构的结构?
- java - 从 JPA 存储库中读取 No property .. found for type
- testing - Katalon Studio 从 5 升级到 6 后缺少报告
- javascript - Google SignOut 过程中的错误未捕获的错误:nb JS
- vb.net - 如何使用visual basic通过串行通信逐字节读取数据?
- python - 如何将列表/数组作为参数传递给python fire?
- laravel - 为什么我使用 Laravel 和 Docker 得到“在您的集群中找不到活动节点”?
- javascript - 程序在 jumpsearch 中无限运行