こんにちは、私はドラッグアンドドロップに関する質問があります。私は、ドラッグアンドドロップだけでウェブサイトを作成するためのアプリケーションを作成しています。私はちょっとユーザーが特定の位置に要素をドロップすることができる機能を実装しています。ドロップされた要素の下の要素は下に移動します。今問題は、要素が動的に生成されることです。例えば、 。右側のパネルにはイメージの形式で異なるコンポーネントがあり、それらの要素をドラッグするといくつかのメタデータが渡され、要素がドロップされると、メタデータに基づいてhtml要素が作成されます。domツリーの特定の位置に動的に作成されたドロップされた要素をプッシュ
<div class="drop-zone">
<div>
<!--container 1-->
</div>
<!-- now i want to drop that element in between which is generated dynamically -->
<div>
<!--container 2-->
</div>
</div>
***************** EDIT ************************* JSONオブジェクトは、同様の機能を文字列化するために使用される****以下のコード・ヘッダ・ドロップで
がドラッグされる指令である、JSONfnは同じである
(function(){
define(['../../../../app','./../service/header.factory.js'],function(app){
app.directive('headerDrop',['HeaderFactory',function(HeaderFactory){
return {
restrict: "E",
replace: false,
scope: {},
link: function(scope,element,attrs) {
element.on('dragstart',function(e){
e.originalEvent.dataTransfer.setData("data",JSONfn.stringify(HeaderFactory));
});
},
template: "<img id='header' draggable='true' src='/src/create_template/images/noimage.jpg' width='100' height='100'> </img>"
}
}]);
app.directive('dragContainer',function(){
return {
restrict: "E",
replace: false,
scope: {},
template: "<div id='elements-container'> <h1 style='text-align:center;'> All </h1><header-drop> </header-drop> </div>"
}
});
});
})()
私は後で答えを見つけたもののは、コントローラ
element.on('drop',function(event){
console.log(event);
if(event.target.className !== "drop-zone"){
event.preventDefault();
return false;
}
var data = JSONfn.parse(event.originalEvent.dataTransfer.getData("data"));
if(data.type=="header"){
var heading = document.createElement("h1");
console.log("client height" , heading.clientWidth);
heading.innerHTML = data.textValue;
//console.log("pageY",event.pageY);
//console.log("pageX",event.pageX);
heading.style.position = "relative";
heading.style.top = ((event.pageY/window.innerHeight)*100)+ "%";
heading.className = "editable";
event.target.appendChild(heading);
heading.style.top = event.clientY;
addingEvents();
}
});
を働くだろう、かなり確信していますか? – guest271314
私はデータがdataTransferを使用して渡されていることを意味し、それが私が作成しなければならないヘッダであれば、 "header"という文字列を渡していて、コンポーネントスクリーンから要素をドラッグすると、私はhtml要素を生成します – nightmaredevil2010
コードの問題は何ですか? – guest271314