我的服务定义是否正确?

时间:2016-11-02 20:49:55

标签: javascript angularjs

(function(){
    angular.module('myApp',[])
})();

(function(){
    angular.module('myApp.dashboard',[])
})();

(function(){
    angular.module('myApp.value',[])
})();

(function(){
    'use strict';
    angular.module('myApp.value').service('whichToShow',function(){
        alert("running2");
        var logged=true;
        return {
            getVar: function(){
                return logged;
            },
            setVar: function(value){
                logged=value;
            }

        };
    });
})();

(function(){
    'use strict';
    angular.module('myApp.dashboard').controller('mainControl',mainControl);

    mainControl.$inject = ['whichToShow'];
    alert("running1");
    function mainControl(whichToShow){
        this.logged=whichToShow.getVar();
        alert(this.logged);

    };
})();

我正在编写一个模仿另一个已完成应用的应用,但我无法使用我新定义的服务。我根据他的代码https://github.com/PatrickO10/meetUp/blob/master/js/all.js写作 你能告诉我应该修改哪一部分吗?你最好更改我的代码,这样我就可以知道为什么我的错了。谢谢!

你可以在这里看到我的所有代码: https://plnkr.co/edit/YeahrG28bT2izX8gMKor?p=preview 我没有做太多关于此事,我现在想要的是让一些按钮看不见

2 个答案:

答案 0 :(得分:1)

您的 whichToShow myApp.value 模块中定义,但在 myApp.dashboard 模块中使用。在声明 myApp.dashboard 模块时,您只需要添加对 myApp.value 模块的引用。

angular.module('myApp.dashboard',['myApp.value'])

答案 1 :(得分:0)

你写的是factory。 要定义服务,您必须获取实例并使用方法对其进行丰富。

因此,您可以将service更改为factory,如下所示:

(function(){
    'use strict';
    angular.module('myApp.value').factory('whichToShow',function(){
        alert("running2");
        var logged=true;
        return {
            getVar: function(){
                return logged;
            },
            setVar: function(value){
                logged=value;
            }

        };
    });
})();

或者,像这样定义service

(function(){
    'use strict';
    angular.module('myApp.value').service('whichToShow',function(){

        var logged=true;
        this.getVar = function(){
                return logged;
            };
        this.setVar =function(value){
                logged=value;
            };
    });
})();

修改1:

您的plunker代码不正确。 请检查此更正:https://plnkr.co/edit/2HAwy7MV4dK0yUuBcCfG?p=preview

  • 您加入all.js时指的是js/all.js,而不只是all.js

  • 在您的mainControl中,您的注射不正确。