Angular+Jade |从控制器到脚本标记的数组
Angular + Jade | Array from controller to script tags
有没有一种方法可以访问我控制器上的数组,并在我的翡翠模板上的<script>
标签中准确地渲染它。
例如:
Controller.js
$scope.myArray = ["item1","item2"];
在我的index.jade:
script.
var clientArray = {{myArray}}
到目前为止,我还没有成功,所以我想知道Jade+Angular是否有这种可能性。
如有任何帮助,我们将不胜感激。
更新-使用上述配置时返回错误
SyntaxError: Unexpected token {
at eval (native)
您不能直接访问脚本中的作用域对象。范围在该实体(controller
、directives
等)的角度渲染期间被分配给元素。您需要通过对元素调用.scope()
来获取包含作用域的元素,并从作用域中获取项,并且只有在元素准备好时才能执行此操作。
示例:-
假设您的控制器是:-
app.controller('MainCtrl', function($scope) {
$scope.myArray = ["item1","item2"];
});
并且您的标记中有这个控制器。
<div class="ctrl" ng-controller="MainCtrl">
<!-- ....some content -->
</div>
然后你可以通过以下操作访问:-
<script>
angular.element(document).ready(function() { //Or get an instance of $timeout from the injector
var clientArray = angular.element('.ctrl').scope().myArray;
console.log(clientArray);
});
//Or run it via the timeout which is pushed into the async queue and is run after angular has manipulated the DOM again it is relative.
var timeout= angular.injector(['ng']).get('$timeout');
timeout(function(){
var clientArray = angular.element('.ctrl').scope().myArray;
console.log(clientArray);
});
</script>
演示
这里有很多注意事项:-
1) 您需要确保在运行脚本时,angular必须已经为元素分配了范围。(基本上angular已经完成了DOM渲染)
2) 您需要选择附加了作用域的特定元素。
在前面的例子中,选择器工作是因为我在angular之前加载了jquery。否则,您将不得不使用本机DOM方法访问元素,例如
angular.element(document.querySelector('.ctrl')).scope().myArray
但不管怎样,您应该尽量不要进入访问angular之外的scope对象的位置如果你指出你的具体问题是什么,可能有更好的方法来处理它。
相关文章:
- 如何在java脚本中传递对象数组
- 对照数组脚本检查文本框中的值不起作用
- 如何将数组(Google应用程序脚本)返回到HTML侧边栏
- 如何将数组(数字)加载到谷歌应用脚本 Byte[] 中
- 使用Google应用程序脚本将数组传递给客户端函数
- 重建有角度的java脚本数组对象
- 将JSON数组从PHP传递到Java脚本
- 当我有一个脚本数组时,如何等待脚本加载
- JavaScript/jQuery-脚本不起作用-添加&删除类,合并数组-测试用例
- 如何使用java脚本和php获取多维数组数据
- 将已编辑的文件(图像)数组发送到php脚本
- 如何使用AJAX处理从PHP脚本返回的数组
- 尝试将数组从内容脚本发送到弹出脚本时出现 Chrome 扩展程序时出错
- 将信息从暴雪API提取到谷歌脚本中的数组中
- 咖啡脚本数组查找下一个位置
- 使用 Google Apps 脚本处理数组中输入元素中的多个文件
- 如何在 Javascript 命名空间脚本中创建函数数组
- 通过node-js脚本将文档数组插入mongodb中的数据库时出现问题
- 淡入 在页面 html 之间淡出并使用数组脚本更改图像
- HTML数组脚本不工作(in_Array未定义)