2016-08-04 3 views
0

start()とstop()だけでjquery draggableを使用する関数があります。

オブジェクトの値がdraggableの外でnull

私はので、私はこのようなウィンドウに追加することを決定しましたstop() INSIDEプロパティを設定し、ドラッグOUTSIDEそれを取得したいと思います:

function dragTimbro() { 
    $scope.documentoTimbrabile = true; 
    angular.element(document.querySelector('#timbroDraggable')) 
       .draggable({ 
        containment: "parent", 
        start: function(event, ui) { 
         $(this).removeClass("draggable"); 
         $(this).addClass("dragging"); 
        }, 
        stop: function(event, ui) { 
         $(this).addClass("draggable"); 
         $(this).removeClass("dragging"); 
         $scope.setPos(ui.position.left, ui.position.top); 
        } 
       });  
}; 

$scope.setPos = function(posX, posY) { 
    $scope.documentoDaTimbrare[$scope.numPag].posX = posX; 
    $scope.documentoDaTimbrare[$scope.numPag].posY = posY; 
} 



ときに私を最後の行のオブジェクトにアクセスしようとすると、nullです。
私はそれが異なるスコープの問題を知っているが、私はこの問題を解決する方法がわからない...

UPDATE:それはstop()の内側にアクセスすることはできませんので$scopeは、ドラッグ可能な外で定義されます。

enter image description here



UPDATE 2:私は、誰かが怒っ作るつもりです知っているが、どういうわけか、私は解決策を見つけることができた...
私は基本的にdragTimbro(外機能を作成しました)と、それを停止の中で呼ぶ。ストップは機能ではなく、オブジェクト....私は、イベントが発生する前にif句が実行され

+0

これは問題の1つですが、主な問題ではありません。オブジェクトがまだヌルの場合でも;) –

+0

あなたは要素をドラッグしませんでしたか? – Hydro

+0

は –

答えて

-1

物事を明確にするために、コードを更新しました
を見て、なぜ
は、しかし、私は届きません。この場合、stop機能のブロックにifステートメントを挿入します。

ifこの場合はステートメントがこれ以上意味をなさないため、削除しました。ところで、あなたの識別子は非常に長いです。

$scopeオブジェクトはstop関数の範囲では使用できないため、$scope変数を変更する方法があるグローバルオブジェクトでアクセス可能なグローバルメソッドまたはプロパティを定義できます。または、単に$scopeをグローバルにする。

window.$scope = $scope; 
angular 
    .element(document.querySelector('#timbroDraggable')) 
    .draggable({ 
     containment: "parent", 
     // On drag start 
     start: function(event, ui) { 
      $(this).removeClass("draggable"); 
      $(this).addClass("dragging"); 
     }, 
     // On drag stop 
     stop: function(event, ui) { 
      window.oggettoDaTimbrare.posizioneTimbroX = ui.position.left; 
      window.oggettoDaTimbrare.posizioneTimbroY = ui.position.top; 

      $scope.documentoDaTimbrare[$scope.numPag].pagine.posX = window.oggettoDaTimbrare.posizioneTimbroX; 
      /* ... */ 
     } 
    }); 
+0

$ scopeはdraggableの外で定義されているので、その内部ではアクセスできません –

+0

私はスクリーンショットで質問を更新しました... –

関連する問題