[英]AngularJS directive inside ng-repeat
我正在AngularJS中創建拖放指令。 我的directive
位於ng-repeat
內時遇到問題。
問題是,當我將元素拖動到可放置div時,它總是從列表中獲取最后一個元素。 如果我將列表中的第一個拖動,它將仍然刪除最后一個。 這是我的HTML:
<li ng-repeat="data in source">
<div draggable="#divDrop" drop-model="otherList" push-object="data">
{{data.name}} {{data.price}}
</div>
</li>
<div id="divDrop" class="alert alert-info">Drag your data into this box</div>
最后,我有一個簡單的指令,如下所示:
app.directive('draggable', function($timeout) {
return {
scope: {
dropModel: '=',
pushObject: '='
},
link: function (scope, element, attrs) {
$timeout(function () {
var draggableEl = attrs.draggable;
$(draggableEl).droppable({
drop: function (event, ui) {
scope.dropModel.push(scope.pushObject);
scope.$apply();
}
});
$(element).draggable({
revert: true,
revertDuration: 0
});
});
}
};
});
需要明確的是, scope.pushObject
始終是ng-repeat
的最后一個項目,而不是被拖動的項目。
您可以像這樣訪問要拖動的每個項目的范圍:
drop: function (event, ui) {
var data = $(ui.draggable).scope().data;
scope.dropModel.push(data);
scope.$apply();
}
這樣,您就不需要指令范圍內的pushObject
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.