使用带有控制器的angular routeProvider

时间:2016-01-27 22:47:59

标签: angularjs

请考虑使用routeProvider在ng-view中注入page(n).html的代码。

除了控制台错误:

  

未知提供者:$ routeProviderProvider< - $ routeProvider

函数routeIt的参数是要导航到的页面的名称,如何将条件开关与routeProvider.when混合以便以最有效的方式调用与参数匹配的页面?感谢

(function () {
    'use strict';
    angular
        .module('appModule')
        .controller('MainMenuCtrl', ['$scope', '$http', 'TogglerFactory', '$routeProvider',  MainMenuCtrl]);

    function MainMenuCtrl($scope, $http, Toggler, routeProvider) {

        $http.get('models/mainMenu.json').then(
            function (response) {
                $scope.menuItems = response.data;
            },
            function (error) {
                alert("http error");
            }
        )

        function routeIt (page) {
            routeProvider
                .when('/page1', {
                    url: "/page1",
                    templateUrl: 'views/page1.html',
                    controller: 'Page1Ctrl'
                })
                .when('/page2', {
                    url: "/page2",
                    templateUrl: 'views/page2.html',
                    controller: 'Page2Ctrl'
                })
        }

        $scope.itemClicked = function (item){
            Toggler.menuToggle();
            routeIt(item);
        }

    }
})();

2 个答案:

答案 0 :(得分:0)

服务提供商在运行阶段(即除provider服务和config块之外的任何地方)都无法注入。可以使路由提供程序可注入并在配置阶段后配置它,

app.config(function ($provide, $routeProvider) {
  $provide.value('$routeProvider', $routeProvider);
});

控制器并不是实现任何逻辑的最佳场所(例如路由热插拔)。

答案 1 :(得分:0)

好的,您使用routeProvider错误,需要在char *buffer = NULL; int *fdata = NULL; //Get the file size as in above code and after that buffer = malloc(sizeof(char)*fsize); fdata = malloc(sizeof(int)*fsize); result=fread(buffer, sizeof(char), fsize, fp); if (result != fsize) { printf("Error Reading file!\n"); } for (int i = 0; i < fsize; i++) { if (buffer[i] < 0) { fdata[i] = 256 + (int)buffer[i]; } else { fdata[i] = (int)buffer[i]; } } for (int i = 0; i < fsize; i++) { printf("%d ",fdata[i]); } //free up after your done free(buffer); buffer=NULL; free(fdata); fdata=NULL; 块内配置路线

.config

如果要更改控制器中的网址,请使用控制器内的angular.module('myApp', []) .config(function($routeProvider, $locationProvider) { $routeProvider .when('/page1', { url: "/page1", templateUrl: 'views/page1.html', controller: 'Page1Ctrl' } })