매개 변수가 있는 지시어에서 컨트롤러 함수 호출
지시문은 일부 매개변수를 사용하여 컨트롤러에서 함수를 호출하는 방법은 무엇입니까?
저는 범위에 변수 myVar를 부여하고자 합니다.$apply(attrs)(할 일);
HTML:
<div ng-app="component">
<div ng-controller="ctrl">
<span ng-repeat="i in myarray">
<span customattr whattodo="addVal">{{i}}</span>
</span>
</div>
컨트롤러 JS:
function ctrl($scope) {
$scope.myarray = [1];
$scope.addVal = function (value) {
$scope.myarray.push(value);
}
}
지시 JS:
angular.module('component', []).directive('customattr', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var myVar = 5;
scope.$apply(attrs.whattodo);
}
};
});
작업 방법 중 하나는 다음과 같습니다.
이 속성을 스코프에 함수 유형이 있는 스코프 모델로 바인딩해야 합니다.다른 (지시)소프가 필요할 때 실행할 수 있습니다.
HTML
<body ng-controller="MainCtrl">
Value: {{value}}!
<button customattr whattodo="addValue">Add</button>
</body>
JS
angular.module('component', [])
.controller('MainCtrl', function($scope) {
$scope.value = 1;
$scope.addValue = function(val){
alert(val);
$scope.value = val;
}
});
.directive('customattr', function () {
return {
restrict: 'A',
scope: {
whattodo: "=" // or ' someOtherScopeName: "=whattodo" '
},
link: function (scope, element, attrs) {
var myVar = 5;
scope.whattodo(myVar); // or ' scope.someOtherScopeName(myVar) '
}
};
});
= 또는 =attr - 로컬 스코프 속성과 속성 값을 통해 정의된 이름의 상위 스코프 속성 간에 양방향 바인딩을 설정합니다.특성 이름을 지정하지 않으면 특성 이름이 로컬 이름과 동일한 것으로 가정됩니다.지정된 범위 및 위젯 정의: {localModel:'=myAttr'}: 위젯 범위 속성 localModel은 상위 범위에 상위 모델의 값을 반영합니다.parentModel의 모든 변경 사항은 localModel에 반영되고 localModel의 모든 변경 사항은 parentModel에 반영됩니다.
html로
whattodo="addVal(value)"
지시에 따라
scope.$apply(function(s){
s.whattodo({value : myVar});
});
분리된 범위에서 & 기호를 사용하는 것은 어떨까요?
<body ng-controller="MainCtrl">
Value: {{value}}!
<button customattr add-val="addValue(value)">Add</button>
</body>
컨트롤러에서:
function ctrl($scope) {
$scope.myarray = [1];
$scope.addValue = function (value) {
$scope.myarray.push(value);
}
}
그리고 지시사항:
angular.module('component', []).directive('customattr', function () {
return {
restrict: 'A',
scope: {
addVal: "&"
},
controller: function ($scope) {
var myVar = 5;
// To execute addVal in controller with 'value' param
$scope.addVal({value: value})
}
};
});
언급URL : https://stackoverflow.com/questions/16135711/call-a-controller-function-from-directive-with-parameters
'source' 카테고리의 다른 글
Ajax - 성공 함수에서 반환된 배열을 사용하는 방법 (0) | 2023.11.01 |
---|---|
Log4j XML 구성 파일을 사용하여 최대 절전 모드 로깅 구성? (0) | 2023.11.01 |
jQuery의 .hide()와 표시할 CSS 설정의 차이: 없음 (0) | 2023.11.01 |
다른 버전의 mariadb에 대한 다른 검색 키 (0) | 2023.10.27 |
호출기능의 파일명, 회선번호, 함수명 출력 - C Prog (0) | 2023.10.27 |