Javascript Angularjs中带有bindonce的自定义指令值

Javascript Angularjs中带有bindonce的自定义指令值,javascript,performance,angularjs,angularjs-ng-repeat,Javascript,Performance,Angularjs,Angularjs Ng Repeat,我得到了一个ng的重复与数以千计的项目,所以我决定试用,以减少手表的数量。但我不知道如何正确使用它。 现在我得到了以下代码: <div ng-repeat="card in cards"> <div class="item-box" draggable="{{card.category}}" itemId="{{card._id}}"> <img ng-src="{{card.image}}" width="100%" height="10

我得到了一个ng的重复与数以千计的项目,所以我决定试用,以减少手表的数量。但我不知道如何正确使用它。 现在我得到了以下代码:

<div ng-repeat="card in cards">  
    <div class="item-box" draggable="{{card.category}}" itemId="{{card._id}}">
       <img ng-src="{{card.image}}" width="100%" height="100%">
    </div>
</div>
似乎不起作用,我没有收到任何错误,只是什么都没有发生

结果看起来像

<div class="item-box ng-scope" bo-attr="" bo-attr-draggable="card.category" bo-attr-itemid="card._id" draggable="Pants" itemid="m--Pi">

bo attr实际上看起来不像您想要做的,您只需要一个指令来计算和绑定数据,而不需要创建任何手表。我做了一个plnkr,我想这就是你想要的:

app.controller('MainCtrl',函数($scope){
$scope.name='World';
});
//html
//伪指令
app.directive('directive',function(){
返回{
模板:“”,
编译:函数(){
返回{
前置:功能(范围、elt、属性){
scope.val=scope.$eval(属性指令);
}
};
}
}
})
不要看手表


如果我误解了什么,请告诉我。

看起来不错。最后您将得到两个属性,draggable和itemid,这两个属性已被计算为draggable=“Pants”itemid=“m--Pi”。有什么问题吗?指令没有得到执行,我想,我没有得到错误,但它不起作用。噢,draggable是一个指令吗?在这种情况下,您应该只执行draggable=“card.category”,在指令中,您将$eval attrs.draggable,而不在其上设置手表。请您举一个简单的例子,好吗?再问一个问题,您认为哪种解决方案更好。如果我使用$(document)仅对父对象发出1个指令(“单击“,”.item框”,function());还是使用这个解决方案?因为在这个解决方案中,该指令将被执行数百次或更多次。如果您想学习angular,我建议不要回到jQuery,因为它会让您稍后混淆单击的来源。如果您所做的只是单击绑定,那么应该使用ng click。dom类搜索的效率可能与在每个重复的元素上附加ng单击的效率相同。您还有其他问题吗?如果是,请询问,否则请标记为已回答。另外,对于未来,plnkr和JSFIDLE是共享代码的非常好的工具,而不是代码图片。
bo-attr bo-attr-draggable="card.category" bo-attr-itemId="card._id"
<div class="item-box ng-scope" bo-attr="" bo-attr-draggable="card.category" bo-attr-itemid="card._id" draggable="Pants" itemid="m--Pi">
app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
 });

// html
<div directive="name"></div>
// Dummy directive
app.directive('directive', function() {
  return {
    template: '<div bindonce bo-text="val"></div>',
    compile: function() {
      return {
        pre: function(scope, elt, attrs) {
          scope.val = scope.$eval(attrs.directive);
        }
      };
    }
  }
})