【发布时间】:2018-05-12 15:40:19
【问题描述】:
有人能帮我理解一下吗?
我有一个包含在控制器中的自定义指令,我想在多个页面中使用相同的指令。指令模板包含按钮,它们的相应操作将在包含指令的控制器中处理。
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.我可以将指令范围设为假并在多个页面中重复使用指令吗?
2.我可以将控制器“VM”对象传递给指令,而不是传递单个方法,例如
<data-table method1="vm.search1(val)" method2="vm.search2(val)" method3 ="vm.search3(val)" method4="vm.search1(val)"></data-table>
并在指令中访问它们
范围:{ 方法1:'&',方法2:'&',方法3:'&',方法4:'&' }
因为我有太多方法要处理。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope