将指令范围属性绑定到字符串

时间:2016-12-20 12:42:24

标签: angularjs

HTML code:

<ul  drag-drop  idProperty="today" >
  <li  draggable="true" ng-repeat="option in options track by $index" >
       {{option.plan_option_id}}
  </li>
</ul>

dragDrop是一个自定义指令:

module.directive('dragDrop',  function() {
  return {      
    scope: {
      idProperty:'@'
    },
     ...
  }
});

我希望idProperty只获取一个字符串值(例如星期二)而不连接到$ scope (例如$ scope.today ='Tuesday')。无论如何要将HTML中的idProperty 直接与字符串值绑定?类似的东西:idProperty="'Tuesday'"

4 个答案:

答案 0 :(得分:2)

你非常接近。

你有这一行:

<ul  drag-drop  idProperty="today" >

应该是

<ul  drag-drop  id-property="today" >

答案 1 :(得分:2)

您应该使用id-property="today"来完成这项工作。

要在不使用指令的scope的情况下获取它,您只需阅读指令的属性:

module.directive('dragDrop',  function() {
  return {
    link: function(scope, element, attrs) {
        var idProperty = attrs.idProperty;
    }
  }
});

答案 2 :(得分:0)

可能看起来像这样

 <ul  drag-drop  id-property="today" >
 <li  draggable="true" ng-repeat="option in options track by $index" >
   {{option.plan_option_id}}
</li>

module.directive('dragDrop',  function() {
return {      
 scope: {
   idProperty:'@'
 },
 link: function(scope,elem, attrs, ctrl){
        var idProperty = null;
        attrs.$observe('idProperty', function(val){
           var idProperty = val
        })
  }
 }
});

答案 3 :(得分:0)

当你在html中使用Directive时,必须像这样使用它

ngRepeat directive 
in html - > ng-repeat


your directive which you have made
idProperty
in html -> id-property

因为每个首都角色都应该替换为&lt ;-( smallcharacter)&gt; 所以使用

  <ul drag-drop id-property="today">

阅读本文档

https://docs.angularjs.org/guide/directive