angularjs 1.x 사용자 정의 지령의 컨트롤러와 지령 간의 통신
//html
<div ng-controller="MyCtrl">
<loader howToLoad="loadData()"> loader>
div>
//
var myModule = angular.module("MyModule", []);
//controller
myModule.controller('MyCtrl', ['$scope', function($scope){
$scope.loadData=function(){
console.log(" ...");
}
}]);
myModule.directive("loader", function() {
return {
restrict:"AE",//Element,Attribute
scope: true,// , scope
link:function(scope,element,attrs){
// 3 :
//scope.loadData(); // 1
//scope.$apply("loadData()"); // 2
setTimeout(function(){
scope.$apply(attrs.howtoload());// 3,
})
}
}
});
명령에서 scope.$를 통해apply는 컨트롤러의 방법을 호출하는 데 이 세 가지 방식을 사용할 수 있습니다.
명령의 속성 scope가true와false일 때 호출될 수 있습니다.scope가 {}일 때 명령의 속성 scope 값을 호출하는 데 성공하지 못합니다.
2. 컨트롤러에서 지령에 메시지 보내기
//html
<div ng-controller="MyCtrl">
<loader howToLoad="loadData()"> loader>
div>
//controller
myModule.controller('MyCtrl', ['$scope', function($scope){
$scope.loadData=function(){
$scope.$broadcast('approvalRecord.reloadData');//
}
}]);
myModule.directive("loader", function() {
return {
restrict:"AE",//Element,Attribute
scope: true,// , scope
function reloadData(){
//TODO
}
//
scope.$on('approvalRecord.reloadData', function(){
reloadData();
});
}
}
});
컨트롤러가 지령 안의 방법을 호출하면 방송을 보내고 지령 안에서 방송을 수신한 다음에 리셋 방법에서 지령 중의 방법을 실행할 수 있다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.