我有一个2个控制器,我有两个控制器内部声明的相同功能。
我的功能是:
c:\path\to\PortableGit-2.6.3-64-bit\git-cmd.exe
我的问题是如何宣布一次。可重复的代码不好?
答案 0 :(得分:0)
您可以定义像
这样的工厂LinkButtons
现在您可以在任何控制器中注入此ShowAlertFactory并调用app.factory('ShowAlertFactory', function(){
return {
showAlertMessage : function(){
alert("user");
}
}
});
答案 1 :(得分:0)
您应该在服务或工厂中声明您的常用功能,然后将其注入控制器
工厂代码
var app = angular.module('myApp', []);
app.factory('alertFactory', function() {
return {
alertMessage : function(){
alert("user");
}
}
要注射工厂,请尝试此
app.controller('myCtrl', ['alertFactory', function(alertFactory) {
});
<强>参考:强>
答案 2 :(得分:0)
(angular.module('myApp', [])
.factory('alertFactory', alertFactory);
.controller('alertCtrl', alertCtrl);
function alertFactory () {
return {
alertMessage : function(){
alert("user");
}
}
alertCtrl.$inject = ['alertFactory'];
function alertCtrl(alertFactory){
alertFactory.alertMessage();
})();
答案 3 :(得分:0)
如果只复制js,将此代码添加到工厂就足够了。但是,如果您还要复制html,处理这种情况的更好方法是使用指令。
尝试识别html是否也被复制,并且如果是这种情况则使用指令。
app.directive('myDirective', function() {
return {
template: "html common to both controllers",
link: function() {
// js common to both controllers
}
}
}