javascript - 指令不返回 html 元素

标签 javascript angularjs angularjs-directive

我有点难以理解我试图传递名称的指令,我希望该指令返回 <img>成一张 table 。

这里是在 Controller 中定义名称的方式:

$scope.name = 'foo';

这是html

<tr>
    <th>status</th>
    <td><icon-selector filterby="name"></icon-selector></td>
</tr>

这是指令

angular.module('myApp')
    .directive('iconSelector', function ($compile) {

    return {
        restrict: 'E',
        scope:{
            filterby:'='
        },

        link: function(scope,element, attrs) {
            console.log(scope.filterby);
            if (scope.filterby === 'foo') {
                   return '<img src="sample.png">';
            }else {
                 return '<p>invalid</p>';
            }
         }
      };
  });

理想情况下,当指令处理 {{name}} 时,它在浏览器中应该如下所示:

<tr>
    <th>status</th>
    <td><img src="sample.png"></td>
</tr>

有人可以告诉我我做错了什么吗,一个 plunker 演示将不胜感激。

最佳答案

链接函数不会返回 HTML 元素来替换应用指令的元素。 link函数一般用于注册事件监听器和DOM操作。如果你想替换元素,你可以这样做:

link: function(scope,element, attrs) {
  console.log(scope.filterby);
  if (scope.filterby === 'foo') {
    element.replaceWith('<img src="sample.png">');
  } else {
    element.replaceWith('<p>invalid</p>');
  }
}

关于javascript - 指令不返回 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26765251/

相关文章:

Javascript/Jquery 搜索对值数组

javascript - 使用时无限循环? : condition inside "for" loop

javascript - AngularJS JavaScript for 循环警告最多运行一次

javascript - 如何处理 AngularJS 中的错误

javascript - 使用 Angular Directive(指令)的聊天应用程序的可扩展文本区域字段

Javascript 倒计时和时区

javascript - Javascript 的 indexOf() 是如何解析引用的

javascript - 如何将 select2 4.0 与 angularjs 一起使用,何时初始化它

javascript - 渲染完成时的 Select2 指令回调

javascript - Angular : directive with bindToController 'loses' data