使用模板

时间:2016-05-06 20:01:00

标签: javascript angularjs angularjs-directive

我对Angular相对较新,这是我第一次尝试使用自定义指令。我有一个我正在使用的表,每个单元格都有一个数据属性。例如," data-dept =" service",我想在用指令覆盖它之前访问该值。在我的指令中,我设置了template = true,这将删除我的数据属性。

我喜欢我的网站,我正在努力更好地解释我想要做的事情。 http://partnerportal-preprod.automate-webservices.com/list/#/hoursTable

第一行中表格内的单元格是可点击的,但我想知道用户是否点击了服务,例如。

更新

我创建了plunker来更好地说明我的问题。 我有一个基本表,我使用指令来替换表中的行。 在这样做时,我失去了我需要将其设置为我的对象中的键以供以后使用的属性。

http://plnkr.co/edit/oXRM6lRkidnAHfBA4GsR?p=preview

HTML

 <tr>
    <td name="valueIneed" hello-world>John</td>
    <td>Doe</td>
    <td>john@example.com</td>
  </tr>

指令

app.directive('helloWorld', function($parse) {
      return {
            template: '<td><input type="text"></td>',

                    replace: true,
                    transclude: 'true',
                    scope: {
                      position: '='
                    },
             link: function (scope,element,attrs,ngModel) { 


                console.log(attrs.attribute);
                 scope.clickMe = function () {

                  console.log('clicked');
                    scope.isChecked = true;
         };

             }
         };
     });

1 个答案:

答案 0 :(得分:1)

首先删除replace: true

第二次,以查看name属性的值:

console.log(attrs.name);

通过使用replace: true,该指令正在替换具有name属性的元素。

replace:true已弃用 1

来自文档:

  

replace([已弃用!],将在下一个主要版本中删除 - 即v2.0)

     

指定模板应替换的内容。默认为false

     
      
  • true - 模板将替换指令的元素。
  •   
  • false - 模板将替换指令元素的内容。
  •   

- AngularJS Comprehensive Directive API

来自GitHub:

  

Caitp--它被弃用了,因为replace: true存在已知的非常愚蠢的问题,其中一些问题无法以合理的方式得到解决。如果你小心并避免这些问题,那么对你有更多的权力,但为了新用户的利益,告诉他们更容易,这会让你头疼,不要这样做&#34;。

- AngularJS Issue #7636