javascript - 如何在 Angular 对象中使用 for 循环传递给由 $sce 渲染的字符串

标签 javascript jquery html angularjs for-loop

我目前正在使用 $sce.trustAsHtml 渲染一大块 html 和指令。

我使用了一个名为compile-template的指令,它允许我使用ng-directives,例如ng-click和ng-disabled。

如果对象是静态的(例如 name: 'wining'),我就可以传入它们,但是如果我使用 forEach 循环遍历它们,我会得到一个 未定义 结果。

示例:

$scope.xxx = {
name: "winning",
array:["test","123","456","888"]
};

var string = 'I am an <code>HTML</code>string with <a href="#" ng-mouseover="removeExp()">links!</a> and other <em>stuff</em> <button ng-click="fire(a)">TEST</button>'
   angular.forEach($scope.xxx.array, function (a) {

string += 'I am an <code>HTML</code>string with <a href="#" ng-mouseover="removeExp()">links!</a> and other <em>stuff</em> <button ng-click="fire(a)">TEST</button> <button ng-click="works(xxx.name)">Works</button>'
  });



 $scope.myHTML =$sce.trustAsHtml(string);

我这里有一个有效的 jsFiddle 示例:http://jsfiddle.net/3J25M/533/

(^打开开发工具查看console.log^)

请注意“工作”按钮如何工作,但“测试”按钮却不起作用。 (“TEST”按钮从 forEach 循环获取其对象属性。)

<小时/>

如何使用 angular.forEach 传递值?

谢谢!

最佳答案

Please check working example: Demo

用以下代码替换 angular.forEach

angular.forEach($scope.xxx.array, function(a) {
  string += 'I am an <code>HTML</code>string with <a href="#" ng-mouseover="removeExp()">links!</a> and other <em>stuff</em> <button ng-click="fire(' + a + ')">TEST</button> <button ng-click="works(xxx.name)">Works</button>'
});

你的问题出在哪里

<button ng-click="fire(a)">TEST</button>

这里你必须将“fire(a)”替换为

fire( ' + a + ') as you are referring variable  

关于javascript - 如何在 Angular 对象中使用 for 循环传递给由 $sce 渲染的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732751/

相关文章:

javascript - jQuery - 查找最后选择的元素

javascript - 如何将 span 元素添加到 img,然后用链接包装所有内容?

javascript - 单击按钮刷新动画 Gif

javascript - 在编辑时实现锁定和解锁文档

javascript - React shouldComponentUpdate() 不会阻止重新渲染

javascript - 如何使用 "reccount"在 jqGrid 中隐藏和显示自定义按钮

javascript - 如何将输入数量限制为100

javascript - 如何将 javascript 变量发送到 PHP 文件以分配给 PHP 变量?

javascript - 使用html 5和js拍照

javascript - 无需复制/粘贴即可调整大小和加载的 jQuery 函数