我正在尝试使用 jQuery 和 Angular 指令使元素可拖动:
function dragElement($parse) {
return {
restrict: 'A',
link: function($scope, ele, $attr) {
var onDragStart = $attr.onDragStart ? $parse($attr.onDragStart) : null;
var dragData = $scope.$eval($attr.dragData) || ele;
ele.draggable({
containment: 'document',
revert: true,
helper: "clone"
});
ele.on("dragstart", handleDragStart);
function handleDragStart(e) {
if (onDragStart) {
$scope.$apply(function() {
var locals = {
$event: e,
$dragData: dragData,
};
onDragStart($scope, locals); //locals are defined fine here
});
}
}
}
};
}
在我的 Controller 中,我有一个函数,当我开始拖动时会调用该函数。该函数被正确调用,但问题是参数列表为空,并且在指令中解析的本地变量不可用。
Controller 功能
function handleFeatureDragStart($event, data) {
console.log(arguments); //Empty
console.log('inside handle feature start');
console.log($event); //undefined
console.log(data);//undefined
}
最佳答案
我看不到你在哪里触发handleFeatureDragStart函数。
如果“onDragStart”是您想要的函数,则您以错误的方式传递参数并错误地使用它们。
handleFeatureDragStart(e, data);
function handleFeatureDragStart(e, data) {}
“arguments”为空,因为您没有传递其他参数。
关于javascript - Angular $parse 不返回本地人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548586/