簡體   English   中英

在angular js中找不到undefined的視圖,模塊已定義

[英]Can't find view of undefined in angular js, module is defined

我正在嘗試向github上的Hygieia項目添加小部件。 當我將小部件添加到頁面時,它不顯示,並且出現此錯誤:

TypeError: Cannot read property 'view' of undefined
    at link (http://localhost:3000/app/dashboard/directives/widget.js:49:64)
    at http://localhost:3000/bower_components/bower.js:9682:44
    at invokeLinkFn (http://localhost:3000/bower_components/bower.js:9688:9)
    at nodeLinkFn (http://localhost:3000/bower_components/bower.js:9198:11)
    at delayedNodeLinkFn (http://localhost:3000/bower_components/bower.js:9446:11)
    at compositeLinkFn (http://localhost:3000/bower_components/bower.js:8547:13)
    at compositeLinkFn (http://localhost:3000/bower_components/bower.js:8550:13)
    at compositeLinkFn (http://localhost:3000/bower_components/bower.js:8550:13)
    at compositeLinkFn (http://localhost:3000/bower_components/bower.js:8550:13)
    at compositeLinkFn (http://localhost:3000/bower_components/bower.js:8550:13) <widget name="aws-status" class="ng-isolate-scope">

我已經對已經添加到類似模塊的代碼之后的所有代碼進行了建模,但是由於某種原因,窗口小部件無法顯示在頁面上。 這是我聲明模塊的地方,如果您需要查看其他代碼部分以確定我在做什么錯,請告訴我:

(function () {
    'use strict';

    var widget_state,
        config = {
            view: {
                defaults: {
                    title: 'AWS Status' // widget title
                },
                controller: 'awsStatusViewController',
                controllerAs: 'ctrl',
                templateUrl: 'components/widgets/awsstatus/view.html'
            },
            config: {
                controller: 'awsStatusConfigController',
                controllerAs: 'ctrl',
                templateUrl: 'components/widgets/awsstatus/config.html'
            },
            getState: getState
        };

    angular
        .module(HygieiaConfig.module)
        .config(register);

    register.$inject = ['widgetManagerProvider', 'WidgetState'];
    function register(widgetManagerProvider, WidgetState) {
        widget_state = WidgetState;
        widgetManagerProvider.register('aws-status', config);
    }

    function getState(widgetConfig) {
        return HygieiaConfig.local ?
            widget_state.READY :
            (widgetConfig.id ? widget_state.READY : widget_state.CONFIGURE);
    }
});

我發現文件末尾缺少2個括號。 沒有這些,似乎代碼永遠不會執行。

正確的代碼如下所示:

(function () {
    'use strict';

    var widget_state,
        config = {
            view: {
                defaults: {
                    title: 'AWS Status' // widget title
                },
                controller: 'awsStatusViewController',
                controllerAs: 'ctrl',
                templateUrl: 'components/widgets/awsstatus/view.html'
            },
            config: {
                controller: 'awsStatusConfigController',
                controllerAs: 'ctrl',
                templateUrl: 'components/widgets/awsstatus/config.html'
            },
            getState: getState
        };

    angular
        .module(HygieiaConfig.module)
        .config(register);

    register.$inject = ['widgetManagerProvider', 'WidgetState'];
    function register(widgetManagerProvider, WidgetState) {
        widget_state = WidgetState;
        widgetManagerProvider.register('aws-status', config);
    }

    function getState(widgetConfig) {
        return HygieiaConfig.local ?
            widget_state.READY :
            (widgetConfig.id ? widget_state.READY : widget_state.CONFIGURE);
    }
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM