我试图创建一个可拖动的div并绑定到它的位置,以便我可以在其他地方使用它。我需要多个可拖动的元素。到目前为止,我已经创造了一个可拖动的'属性指令,可以根据需要在页面上拖动元素,我用' x'设置初始位置。并且' y'属性。
<body ng-app="myApp" ng-controller="myCtrl">
<div dragable x="50" y="50" style="...."></div>
<p>
x: {{x_loc}}<br/>
y: {{y_loc}}
</p>
<body>
问题是当我尝试添加bind&#39; x&#39;并且&#39; y&#39;到myCtrl范围中的变量
<div dragable x="{{x_loc}}" y="{{y_loc}}" style="...."></div>
这会产生一般的无效表达式错误。我的指令如下:
app.directive("dragable", function($document) {
dragable = {};
dragable.restrict = 'A',
dragable.link = function(scope, element, attrs) {
element.css({
top: scope.y + 'px',
left: scope.x + 'px'
});
function select(evt) {
... // get initial conditions
$document.on('mousemove',move);
$document.on('mouseup',deselect);
};
function move(evt){
... //do some error checking then
//update the element location
};
function deselect(evt){
$document.unbind('mousemove',move);
$document.unbind('mouseup',deselect);
};
$document.on('mousedown', select);
};
dragable.scope = {
x: "=",
y: "=",
};
return dragable;
});
任何建议都会有所帮助。提前谢谢。
答案 0 :(得分:1)
<div dragable x="x_loc" y="y_loc" style="...."></div>
而不是
<div dragable x="{{x_loc}}" y="{{y_loc}}" style="...."></div>
因为
dragable.scope = {
x: "=",
y: "=",
};
如果您使用x: "@"
x="{{x_loc}}"
将起作用
答案 1 :(得分:0)
我认为dragable.scope = {}存在问题。
{{}}
括号。在范围内使用x: "@x_loc"
y: "=y_loc"
x: "=x_loc"
省略名称。像这样x: "="
答案 2 :(得分:0)
您需要从范围属性<div dragable x="x_loc" y="y_loc" style="...."></div>
此外,您需要将position:absolute
添加到CSS样式