我知道如何在控制器中使用Angular的数组表示法,并在应用程序中使用#34;如下所示:
angular.module('appName').controller('controllerName', ['$scope', '$http', function ($scope, $http) {
}]);
但是,如果我有一个使用的控制器"在飞行中怎么办?"
我有一个指令,创建一个由创建的控制器控制的bootstrap-ui模式"当下",这是代码:
angular.module('appName').directive('ngConfirmClick', ['$modal', function($modal) {
// Controller "on the fly"
var modalController = function($scope, $modalInstance) {
$scope.ok = function() {
$modalInstance.close();
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
};
return {
restrict: 'A',
scope: {
ngConfirmClick:"&"
},
link: function(scope, element, attrs) {
element.bind('click', function() {
var message = attrs.ngConfirmMessage || "Really?";
var modalHtml = '<div class="modal-header"><h3 class="modal-title">Confirm</h3></div>'
+ '<div class="modal-body">' + message + '</div>'
+ '<div class="modal-footer"><button class="btn btn-default" ng-click="ok()">OK</button>'
+ '<button class="btn btn-default" ng-click="cancel()">Cancel</button></div>';
var modalInstance = $modal.open({
template: modalHtml,
controller: modalController, // Controller reference
backdrop: false,
});
modalInstance.result.then(function() {
scope.ngConfirmClick();
}, function() {
});
});
}
}
}]);
问题是......我如何在这里使用数组表示法?
// Controller "on the fly"
var modalController = function($scope, $modalInstance) {
...
};
我知道我可以像通常使用可重复使用的控制器一样注册控制器(参见我的第一段代码)......但是:我应该吗?这是唯一的方法吗?
如果这样陈述,这个问题可以被抽象出来并对其他人有所帮助:
如果指令需要创建/使用控制器,并且该控制器仅由该指令使用而没有其他人......应该如何创建控制器?在应用程序内?在什么?
答案 0 :(得分:2)
您可以添加$inject
属性...
// Controller "on the fly"
var modalController = function($scope, $modalInstance) {
...
};
modalController.$inject = ['$scope', '$modalInstance'];
答案 1 :(得分:1)
您正在做的事情已经很好了,您只需要使用数组表示法分配modalController
。您不需要将其作为可重复使用的控制器添加到应用程序中,因为它仅在指令中使用。
JAVASCRIPT
var modalController = ['$scope', '$modalInstance', function($scope, $modalInstance) {
$scope.ok = function() {
$modalInstance.close();
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
}];
或者,您也可以使用$inject
属性添加依赖项。
var modalController = function($scope, $modalInstance) {
$scope.ok = function() {
$modalInstance.close();
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
};
modalController.$inject = ['$scope', '$modalInstance'];