일부 사용자는 이해할 수 있습니까?메서드 (&) 및 모델 (=) 바인딩 대신 부모 'vm'개체를 사용자 지정 지시문에 전달
나는 컨트롤러에 포함 된 사용자 정의 지시를하고 난 여러 페이지에는 표시되는 지시 템플릿 버튼을 포함하고 해당 행동이 지시어에 포함 된 컨트롤러에서 처리됩니다에서 동일한 지침을 사용하고 싶습니다.
Controller
------------------------------------------------------------------------
angular
.module('test')
.component('approval', {
template: '<data-table scopeObj ="vm"></data-table>',
controller: 'PendingApprovalsController',
controllerAs: 'vm'
})
.controller('approvalController', approvalController);
approvalController.$inject = ['$scope'];
/* @ngInject */
function approvalController($scope) {
var vm = this;
vm.search1 = function(val) {
console.log("search1::", val);
};
vm.search2 = function(val) {
console.log("search2::", val);
};
vm.search3 = function(val) {
console.log("search3::", val);
};
vm.search4 = function(val) {
console.log("search4::", val);
};
vm.search5 = function(val) {
console.log("search5::", val);
};
}
Directive
---------------------------------------------------------------------
angular.module('test')
.directive('dataTable', dataTable)
.controller('dataTableController', dataTableController);
function dataTable() {
return {
scope: {
scopeObj: '='
},
controller: 'dataTableController',
controllerAs: 'vm',
template: '<button class="btn-default" ng-click="scopeObj.search1('search1')">Button1</button> <button class="btn-default" ng-click="scopeObj.search2('search2')">Button2</button>+
<button class="btn-default" ng-click="scopeObj.search3('search3')">Button3</button><button class="btn-default" ng-click="scopeObj.search4('search4')">Button4</button>'
};
}
dataTableController.$inject = ['$scope'];
function dataTableController($scope) {
var vm = this;
}
1. 지시어 범위를 false로 만들고 조각 페이지 전체에서 방향을 재사용 할 수 있습니까? { 방법 항목 : '&'방법 2
2.Can는이 I 대신
범위
<data-table method1="vm.search1(val)" method2="vm.search2(val)" method3 ="vm.search3(val)" method4="vm.search1(val)"></data-table>
같은 개별 방법을 전달하고 지정 내부 그들을 액세스하는 지시자 컨트롤러 "VM"객체를 전달할 '&'의 Method3 : '&', method4 '&' 은}
내가 너무 많은 방법을 가지고로 다루다.
기독교인 여러분의 제안에 감사드립니다. 몇 가지 질문 1. 메서드 바인딩 대신 지시문에 "VM"개체를 전달하면 성능이 저하 될 수 있습니다. 2. "vm"객체를 지시어로 전달하는 대신 범위를 사용할 수 있습니까? 지시문 내부에서 false를 사용하여 부모 범위에 액세스 할 수 있고 여러 페이지에서 지시문을 다시 사용할 수 있습니까? – Mano
최대 성능 향상을 위해'testDirective' 템플릿에서'scope-obj'를 설정할 때'::'을 추가하여 ** 일회성 바인딩 **을 사용하십시오 (이 변경으로 응답과 JSFiddle을 업데이트했습니다). 이 설정은 불필요한 watcher를 설정하지 않으므로 성능에 영향을주지 않습니다. 'scope'를'false'로 설정하는 것은 가능 합니다만, 업그레이드를 쉽게 할 수있을 때마다 Angular 2 +의 컴포넌트 아키텍처를 고수하고 싶기 때문에 권장하지 않습니다 (범위 상속이 없습니다). 각도 2+). 또한,'stative '를'지시어 (directive)'와는 반대로'component '로 설정하는 것도 좋은 생각입니다. –