2013-08-31 5 views
1

미니 연락처 목록에서 작업 중이며 끌어서 놓기 효과를 얻으려고합니다. 지금은 DB에서 데이터를 가져오고 이런 모습의 컨트롤러가 있습니다.지시문 내각 호출 컨트롤러 기능

Index.controller('cIndex', function($scope, $http) { 
    $scope.init = function() { 
     $http.get('php/contacts.php').success(function(data) { 
      $scope.jsonContactsList = data; 
      $scope.jsonContactsDetail = []; 
     }); 
    }; 
    $scope.init(); 

    $scope.listdetail = function(index) { 
     alert(index); 
    }; 
}); 

이 컨트롤러는 화면에 연락처 목록을 추가합니다. 나는 목록에서 항목을 끌어서 목록 밖으로 끌어 놓으면 항목이 목록에서 사라지고 해당 특정 연락처에 대한 세부 항목으로 나타납니다.

이제 나는 드래그 효과를 만드는 1 개와 드롭 효과를 만드는 1 개의 지시문 2 개를 가지고 있습니다.

Index.directive('contactListDrag', function() { 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attr) { 
      var options = scope.$eval(attr.contactListDrag); 
      elem.draggable(options); 
     } 
    }; 
}); 

Index.directive('contactListDrop', function() { 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attr) { 
      elem.droppable({accept: '.contact-list-item'}); 
      elem.bind('drop', function(event, ui) { 
       var id = parseInt($(ui.draggable).attr('id'), 10); 
       $scope.listdetail(id); 
      }); 
     } 
    }; 
}); 

지금 내가이 jsonContactsDetail에 jsonContactsList 내부의 줄을 변경 만들지 만, 그렇게하기 위해 의도 listdetail라는 함수를 가지고 컨트롤러 내부에, 나는 컨트롤러에서 listdetail 함수를 호출 할 필요가 , droppable contactListDrop 지시문 내부.

미리 감사드립니다. Daniel!

+0

무엇이 문제입니까? – Chandermani

+0

$ scope.listdetail (id); 두 번째 지시문 내에서 $ scope.listdetail = function (index) { alert (index); }; 컨트롤러에서 –

답변

2

이 문제를 해결하기 위해 scope.listdetail (id)을 사용해야했습니다. 달러 기호없이.

0

$ scope은 귀하의 지침 내에서 사용할 수 없습니다. 당신은 당신의 지시자에게 그것의 부모에 대해 말할 필요가있다. $를 사용하여 당신은 또한 범위 $ 컨트롤러에 대한 지침에서 이벤트를 방출하고들을 수 http://docs.angularjs.org/guide/directive

scope: { 
    var: '=' 
} 

:. 여기에 각 문서의 이해 트랜스 클루 전 및 범위에 섹션 봐 scope on $ - 귀하의 지시어가 특정 기능을 가진 컨트롤러에 묶여 있지 않기 때문에 이것이 더 나은 해결책이라고 생각합니다.

+0

범위가 격리 된 범위가 아닌 경우 범위를 사용할 수 없습니다. 그는 단지 오타가 있었다 :) – Chandermani

관련 문제