Angularjs - 인수를 디렉티브로 전달합니다.
지령에 주장을 넘길 방법이 없을까?
컨트롤러로부터의 지시를 다음과 같이 추가합니다.
$scope.title = "title";
$scope.title2 = "title2";
angular.element(document.getElementById('wrapper')).append('<directive_name></directive_name>');
지시 템플릿의 내용을 하나의 범위 또는 다른 범위에 링크할 수 있도록 인수를 동시에 전달할 수 있습니까?
지시사항은 다음과 같습니다.
app.directive("directive_name", function(){
return {
restrict:'E',
transclude:true,
template:'<div class="title"><h2>{{title}}</h3></div>',
replace:true
};
})
$scope.title2와 같은 디렉티브를 사용하는 경우는 어떻게 해야 합니까?
내장 Angular-directives와 마찬가지로 directive-element의 Atribut을 지정함으로써 커스텀디렉티브에 인수를 전달할 수 있습니다.
angular.element(document.getElementById('wrapper'))
.append('<directive-name title="title2"></directive-name>');
할 은 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아,scope
(인수(들)/파라미터(들)를 포함)를 지시의 공장 출하시 기능에 포함시킵니다. "Direction"을 합니다.title
- parameter - 변수. - 매개 변수. 다음 예를 '아까보다'에서할 수 있습니다.template
Angular-way: , Angular-way: , , Angular-way: 를 합니다).{{title}}
app.directive('directiveName', function(){
return {
restrict:'E',
scope: {
title: '@'
},
template:'<div class="title"><h2>{{title}}</h2></div>'
};
});
바인드 방법 및 내용에 따라 다양한 옵션이 있습니다.
=
입니다.@
바인딩)을 .&
는 함수 됩니다.
경우에 따라서는 "내부" 이름과 다른 "외부" 이름을 사용할 수 있습니다.external은 directive-element의 속성명을 의미하고 internal은 directive의 범위내에서 사용되는 변수의 이름을 의미합니다.
, 지시문을 , 으로는 「」, 「」, 「」, 「」, 「」, 「Attribute」를 의 어트리뷰트를 지정할 .title
.- - 합니다.대신 다음과 같이 디렉티브를 사용합니다.
<directive-name="title2"></directive-name>
이것은, 스코프 정의에서 상기의 옵션 뒤에 이름을 지정하는 것으로 실현할 수 있습니다.
scope: {
title: '@directiveName'
}
또, 이하의 점에 주의해 주세요.
- 기본적으로 Angular 것에 HTML5를 붙여야 .
data-
Angular는 을 .를으로써 지지합니다.data-
.- Attribute에서 프리픽스. 위의 할 수 (Atribute는 Atribute의 Atribute의 Atribute는 Atribute의 Atribute의 Atribute를 지정할 수 있습니다.data-title="title2"
내부적으로는 모든 것이 똑같을 것입니다. - 요소의 속성은 항상 다음 형식입니다.
<div data-my-attribute="..." />
스코프 객체의 에서는 드예예예예예(스코프 객체의 속성)의 .myAttribute
을 깨닫기 전에 을 허비했다 나는 이것을 깨닫기 전에 많은 시간을 잃었다. - 다른 Angular 컴포넌트(컨트롤러, 디렉티브) 간에 데이터를 교환/공유하기 위한 또 다른 접근방법으로는 서비스 또는 디렉티브컨트롤러를 참조해 주십시오.
- 자세한 내용은 Angular 홈페이지(지침)에서 확인할 수 있습니다.
문제를 해결한 방법은 다음과 같습니다.
지시.
app.directive("directive_name", function(){
return {
restrict: 'E',
transclude: true,
template: function(elem, attr){
return '<div><h2>{{'+attr.scope+'}}</h2></div>';
},
replace: true
};
})
컨트롤러
$scope.building = function(data){
var chart = angular.element(document.createElement('directive_name'));
chart.attr('scope', data);
$compile(chart)($scope);
angular.element(document.getElementById('wrapper')).append(chart);
}
이제 동일한 디렉티브를 통해 다른 스코프를 사용하여 동적으로 추가할 수 있습니다.
다음과 같이 시도할 수 있습니다.
app.directive("directive_name", function(){
return {
restrict:'E',
transclude:true,
template:'<div class="title"><h2>{{title}}</h3></div>',
scope:{
accept:"="
},
replace:true
};
})
'accept' 속성의 값과 상위 범위 사이에 양방향 바인딩을 설정합니다.
또한 '=' 속성을 사용하여 양방향 데이터 바인딩을 설정할 수 있습니다.
예를 들어 키와 값을 모두 로컬스코프에 바인드하려면 다음 작업을 수행합니다.
scope:{
key:'=',
value:'='
},
상세한 것에 대하여는, https://docs.angularjs.org/guide/directive 를 참조해 주세요.
따라서 인수를 컨트롤러에서 디렉티브로 전달하려면 다음 항목을 참조하십시오.
http://jsfiddle.net/jaimem/y85Ft/7/
도움이 되었으면 좋겠는데..
컨트롤러 코드
myApp.controller('mainController', ['$scope', '$log', function($scope, $log) {
$scope.person = {
name:"sangeetha PH",
address:"first Block"
}
}]);
지시 코드
myApp.directive('searchResult',function(){
return{
restrict:'AECM',
templateUrl:'directives/search.html',
replace: true,
scope:{
personName:"@",
personAddress:"@"
}
}
});
사용.
파일: Directives/search.html
내용:
<h1>{{personName}} </h1>
<h2>{{personAddress}}</h2>
지시문을 사용하는 파일
<search-result person-name="{{person.name}}" person-address="{{person.address}}"></search-result>
<button my-directive="push">Push to Go</button>
app.directive("myDirective", function() {
return {
restrict : "A",
link: function(scope, elm, attrs) {
elm.bind('click', function(event) {
alert("You pressed button: " + event.target.getAttribute('my-directive'));
});
}
};
});
내가 한 일은 이렇다
html 속성으로 디렉티브를 사용하고 있으며 HTML 파일에 다음과 같은 파라미터를 전달하였습니다. my-directive="push"
지시문에서 마우스 클릭 이벤트 개체에서 검색했습니다. event.target.getAttribute('my-directive')
.
범위를 포함한 클릭 이벤트에 var msg를 삽입합니다.컨트롤러가 ng-click으로 표시된 변수를 변경한 것을 바탕으로 $click을 눌러 확인합니다.
<button type="button" class="btn" ng-confirm-click="You are about to send {{quantity}} of {{thing}} selected? Confirm with OK" confirmed-click="youraction(id)" aria-describedby="passwordHelpBlock">Send</button>
app.directive('ngConfirmClick', [
function() {
return {
link: function(scope, element, attr) {
var clickAction = attr.confirmedClick;
element.on('click', function(event) {
var msg = attr.ngConfirmClick || "Are you sure? Click OK to confirm.";
if (window.confirm(msg)) {
scope.$apply(clickAction)
}
});
}
};
}
])
언급URL : https://stackoverflow.com/questions/26409460/angularjs-pass-argument-to-directive
'programing' 카테고리의 다른 글
PyMongo에서 .sort 사용 (0) | 2023.03.25 |
---|---|
selectOneMenu ajax 이벤트 (0) | 2023.03.25 |
서로 다른 메이븐 모듈의 구성 요소 스캔/JSpring Boot 어플리케이션의 AR (0) | 2023.03.25 |
SQL Server 2016에서 json 어레이 길이를 가져옵니다. (0) | 2023.03.25 |
새로 고치지 않고 페이지의 데이터 업데이트 (0) | 2023.03.25 |