使功能代码可重复使用angularjs

时间:2015-11-27 05:38:14

标签: angularjs

我有一个2个控制器,我有两个控制器内部声明的相同功能。

我的功能是:

c:\path\to\PortableGit-2.6.3-64-bit\git-cmd.exe

我的问题是如何宣布一次。可重复的代码不好?

4 个答案:

答案 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) {
});

<强>参考:

https://docs.angularjs.org/guide/providers

答案 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
        }
    }
}