Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-TypeError:无法读取属性';规范URL';未定义的_Javascript_Angularjs_Angular_Ecmascript 6_Typeerror - Fatal编程技术网

Javascript AngularJS-TypeError:无法读取属性';规范URL';未定义的

Javascript AngularJS-TypeError:无法读取属性';规范URL';未定义的,javascript,angularjs,angular,ecmascript-6,typeerror,Javascript,Angularjs,Angular,Ecmascript 6,Typeerror,我正在使用ES6开发AngularJS中的一个应用程序,但我正在尝试以适合AngularJS 2.0的方式来实现它,所以我使用“Angular new router” Application.js: 应用程序是一个指令,它作为属性放置在标记中 class Application { constructor($router) { this.$router = $router; this.routing(); } routing(){

我正在使用ES6开发AngularJS中的一个应用程序,但我正在尝试以适合AngularJS 2.0的方式来实现它,所以我使用“Angular new router”

Application.js: 应用程序是一个指令,它作为属性放置在
标记中

class Application {

    constructor($router) {
        this.$router = $router;
        this.routing();
    }

    routing(){
        this.$router.config(
            {
                path: '/',
                component: 'main'
                //component: {'main': 'main'} // view-name:component => name.html, NameController
            },
            {
                path: '/doctors',
                component: 'doctors'
            }
        );
    }

}

Application.$inject = ['$router'];

export default function() {
    return {
        scope: {},
        controller: Application,
        controllerAs: 'applicationCtrl'
    };
};
Dashboard.js:

import doctorsCtrl from "../../page/dashboard/DoctorsCtrl.js"; // controller for the component
import mainCtrl from "../../page/dashboard/MainCtrl.js";
import doctors from "./widget/doctors/Doctors.js";


angular.module('agenda.dashboard', ['ngNewRouter'])

    .directive("application", application)
    .directive("doctors", doctors)

    .config(function ($componentLoaderProvider) {
        $componentLoaderProvider.setTemplateMapping(function (name) {
            return 'page/dashboard/' + dotCase(name) + '.html';
        });

        $componentLoaderProvider.setCtrlNameMapping(function (name) {
            return name[0].toUpperCase() + name.substr(1) + 'Ctrl';
        });
    })

    .controller('MainCtrl', mainCtrl)
    .controller('DoctorsCtrl', doctorsCtrl);


    function dotCase(str) {
    return str.replace(/([A-Z])/g, function ($1) {
        return '.' + $1.toLowerCase();
    });
}
    
Main(“/”)工作正常,但当我尝试打开(“/doctors”)时,会出现错误

TypeError:无法读取未定义的属性“canonicalUrl”

at Grammar.recognize (router.es5.js:1453)

at RootRouter.recognize (router.es5.js:752)

at RootRouter.navigate (router.es5.js:680)

at RootRouter.$$rootRouter.navigate (router.es5.js:94)

at Object.fn (router.es5.js:89)

at Scope.$get.Scope.$digest (angular.js:15556)

at Scope.$get.Scope.$apply (angular.js:15824)

at bootstrapApply (angular.js:1628)

at Object.invoke (angular.js:4426)

at doBootstrap (angular.js:1626)

我刚刚发现传递给
.config()
的应该是一个数组

所以当我把它改成这个:

routing(){
        this.$router.config(
         [ // NOTE THIS
            {
                path: '/',
                component: 'main'
                //component: {'main': 'main'} // view-name:component => name.html, NameController
            },
            {
                path: '/doctors',
                component: 'doctors'
            }
         ] // NOTE THIS

        );
    }

它工作得很好。

我刚刚发现传递给
.config()
的应该是一个数组

所以当我把它改成这个:

routing(){
        this.$router.config(
         [ // NOTE THIS
            {
                path: '/',
                component: 'main'
                //component: {'main': 'main'} // view-name:component => name.html, NameController
            },
            {
                path: '/doctors',
                component: 'doctors'
            }
         ] // NOTE THIS

        );
    }

它工作正常。

是否定义了医生变量?如果你使用console.log(医生)你会得到什么?@Braim你是说从“/widget/doctors/doctors.js”导入医生吗?传递给指令方法的变量。在angular.module方法之前,放置console.log行是否定义了变量?如果你使用console.log(医生)你会得到什么?@Braim你是说从“/widget/doctors/doctors.js”导入医生吗?传递给指令方法的变量。在angular.module方法之前,放置console.log行是否定义了变量?如果你使用console.log(医生)你会得到什么?@Braim你是说从“/widget/doctors/doctors.js”导入医生吗?传递给指令方法的变量。在angular.module方法之前,将console.log行