Javascript AngularJS:ng repeat内的指令不尊重新订单
首先 基本上,我有一个指令,它将根据Javascript AngularJS:ng repeat内的指令不尊重新订单,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,首先 基本上,我有一个指令,它将根据ng repeat中的一些信息插入一些元素。对于我的应用程序,我使用了一种非常类似的方法,它根据mime类型插入、或元素 您将看到,当在ng repeat使用的数组中对项目重新排序时,传递给pageStyle指令的项目不再是新订单的最新项目。它似乎保留了以前的位置 app.directive('pageStyle', function () { return { restrict: 'A', scope: { pageStyle
ng repeat
中的一些信息插入一些元素。对于我的应用程序,我使用了一种非常类似的方法,它根据mime类型插入
、
或
元素
您将看到,当在ng repeat
使用的数组中对项目重新排序时,传递给pageStyle
指令的项目不再是新订单的最新项目。它似乎保留了以前的位置
app.directive('pageStyle', function () {
return {
restrict: 'A',
scope: {
pageStyle: '='
},
replace: true,
link: function (scope, element, attrs) {
var ele;
switch (scope.pageStyle) {
case 'bold':
ele = angular.element('<b>bold</b>');
break;
case 'italics':
ele = angular.element('<i>italics</i>');
break;
case 'strike':
ele = angular.element('<strike>strikethrough</strike>');
break;
}
element.append(ele);
}
};
});
app.directive('pageStyle',function(){
返回{
限制:“A”,
范围:{
页面样式:'='
},
替换:正确,
链接:函数(范围、元素、属性){
var-ele;
开关(scope.pageStyle){
大小写“粗体”:
ele=角度元素(“粗体”);
打破
斜体字:
ele=角度元素(“斜体”);
打破
“罢工”案:
ele=角度元素(“删除线”);
打破
}
元素追加(ele);
}
};
});
因此,我想我的主要问题是,当
ng repeat
中的顺序发生变化时,我如何让指令重新评估。这是因为使用了“跟踪方式”“跟踪方式”导致不完全重新构建dom元素,因此提高了ng重复渲染的性能
您的问题需要重新渲染。因此,请删除“跟踪方式”。
您可以通过添加pageStyle范围变量上的watch来检查问题。这将使您清楚地了解这个问题。谢谢,我错误地理解了
track by
的工作原理。我原以为只有当我想在标记中使用$index
时才需要它,但事实证明它是被注入的!