Javascript Angularjs/Jquery数据()

Javascript Angularjs/Jquery数据(),javascript,jquery,angularjs,Javascript,Jquery,Angularjs,如何以声明方式将任意数据附加到html元素并检索它 请看代码 Angular包含jQuery数据() 因此,我想将数据附加到模板中的每个li元素(比如_data=node),然后使用 var li = elm[0].... console.log('li-', li.data('_data')) li - {id:1} 代码: 首先,如果您正试图与angular集成的是某个第三方库,这可能没问题,但现在您正在使用angular生成DOM,并在DOM中嵌入数据。这很奇怪 其次,您的test指令模

如何以声明方式将任意数据附加到html元素并检索它

请看代码

Angular包含jQuery数据()

因此,我想将数据附加到模板中的每个
li
元素(比如_data=node),然后使用

var li = elm[0]....
console.log('li-', li.data('_data'))
li - {id:1}
代码:


首先,如果您正试图与angular集成的是某个第三方库,这可能没问题,但现在您正在使用angular生成DOM,并在DOM中嵌入数据。这很奇怪

其次,您的
test
指令模板使用
ngRepeat
,这将创建隔离范围,您将无法以声明方式访问
li
项。您将不得不使用DOM遍历,这也不是很有角度感

第三,视图应该通过angulars双向绑定绑定到模型。不要试图在上面模拟相反的行为。要么你不应该使用angular,要么你应该改变解决问题的方法,因为否则开发和维护它会很痛苦

如果你能描述一下你想要实现什么,以及为什么你需要在
数据中使用这个模型,我会提供一个真实的答案。现在最简单的解决方案是放弃
test
指令并将其改写为:

控制器的模板:

<ul>
  <li ng-repeat="node in data" model-in-data="node">
    <span class="span2">id - {{node.id}}</span>
  </li>
</ul>

在这里,每个
li
元素都将其模型添加到
data
属性中。

您编写的代码与
data()没有任何关系 template: '<li class="ch" ng-repeat="node in data"  data-node="node">' +
elm[0].children[0].data()
elm.children[0].data()
etc..
<ul>
  <li ng-repeat="node in data" model-in-data="node">
    <span class="span2">id - {{node.id}}</span>
  </li>
</ul>
.directive('modelInData', function($parse) {
   return {
     restrict: 'A',
     link: function($scope, $element, $attrs) {
       var model = $parse($attrs.modelInData)($scope);
       $attrs.$set('data', model);
     }
   }
});