2015-03-07 2 views
1

Я пытаюсь использовать ng-repeat, чтобы легко управлять навигацией на моем сайте. Вот мой код для навигации:Создание контроллера для управления навигацией сайта angularjs

HTML:

<div class="collapse navbar-collapse" id="js-navbar-collapse" ng-controller="Navigation as AppNav"> 

    <ul class="nav navbar-nav"> 
     <li ng-repeat="appLinks in AppNav.appLinks"><a href={{AppNav.appLinks.Page}}>{{AppNav.appLinks.Page}}</a></li> 
    </ul> 
</div> 

Вот мой код контроллера Navigation.js:

'use strict'; 

(function(){ 
var app = angular.module('AppNav', [ ]); 
app.controller('Navigation', function(){ 
    this.appLinks = gems; 

    }); 
var gems = [ 
    { 
     Page: 'Home Page', 
     Link: '"#"' 
    }, 
    { 
     Page: 'About', 
     Link: '"#/about"' 
    }, 
    { 
     Page: 'Contact', 
     Link: '"#:' 
    } 
]; 
})(); 

Я получаю эту ошибку:

GET http://localhost:9000/scripts/controllers/navigation.js angular.js:11607 Error: [ng:areq] Argument 'Navigation' is not a function, got undefined http://errors.angularjs.org/1.3.14/ng/areq?p0=Navigation&p1=not%20a%20function%2C%20got%20undefined at REGEX_STRING_REGEXP (angular.js:63) at assertArg (angular.js:1580) at assertArgFn (angular.js:1590) at angular.js:8431 at angular.js:7599 at forEach (angular.js:331) at nodeLinkFn (angular.js:7586) at compositeLinkFn (angular.js:7078) at compositeLinkFn (angular.js:7081) at compositeLinkFn (angular.js:7081)

Я использую угловую версию v1.3.14. Как хедз-ап, я очень новичок в создании angular.js и приложений, поэтому, если вы можете помочь, сообщите мне, что я делаю неправильно вместе с образцом кода.

Благодарим вас за вашу помощь заранее!

содержание app.js:

'use strict'; 

/** 
* @ngdoc overview 
* @name testappApp 
* @description 
* # testappApp 
* 
* Main module of the application. 
*/ 
angular 
    .module('testappApp', [ 
    'ngAnimate', 
    'ngAria', 
    'ngCookies', 
    'ngMessages', 
    'ngResource', 
    'ngRoute', 
    'ngSanitize', 
    'ngTouch' 
    ]) 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/main.html', 
     controller: 'MainCtrl' 
     }) 
     .when('/about', { 
     templateUrl: 'views/about.html', 
     controller: 'AboutCtrl' 
     }) 
     .otherwise({ 
     redirectTo: '/' 
     }); 
    }); 

Main.js:

'use strict'; 

describe('Controller: MainCtrl', function() { 

    // load the controller's module 
    beforeEach(module('testappApp')); 

    var MainCtrl, 
    scope; 

    // Initialize the controller and a mock scope 
    beforeEach(inject(function ($controller, $rootScope) { 
    scope = $rootScope.$new(); 
    MainCtrl = $controller('MainCtrl', { 
     $scope: scope 
    }); 
    })); 

    it('should attach a list of awesomeThings to the scope', function() { 
    expect(scope.awesomeThings.length).toBe(3); 
    }); 
}); 

ответ

0

WORKING DEMO

HTML:

<div class="collapse navbar-collapse" id="js-navbar-collapse" ng-controller="Navigation as AppNav"> 

    <ul class="nav navbar-nav"> 
     <li ng-repeat="appLinks in AppNav.appLinks"><a ng-href={{appLinks.Link}}>{{appLinks.Page}}</a></li> 
    </ul> 
</div> 

Вы неправильно ссылались на атрибуты страницы и ссылки. Вот почему данные не показывались. В ng-repeat у вас есть appLinks in AppNav.appLinks, но внутри тегов li вы использовали AppNav.appLinks.Page, который указывает на массив. Вместо этого вы должны использовать appLinks.Page

Контроллер:

(function(){ 
    'use strict'; 

var app = angular.module('AppNav', [ ]); 
app.controller('Navigation', function(){ 
    this.appLinks = gems; 
    }); 



    var gems = [ 
    { 
     Page: 'Home Page', 
     Link: "/#" 
    }, 
    { 
     Page: 'About', 
     Link: "/#/about" 
    }, 
    { 
     Page: 'Contact', 
     Link: "/#" 
    } 
    ]; 

})(); 
+0

Привет Mohamedrias, спасибо за ваш вклад, я вижу, ты получил это работает, но когда я вставляю контроллер и HTML-код в моем приложении я все еще вижу ошибку: ' GET http: // localhost: 9000/scripts/controllers/navigation.js angular.js: 11607 Ошибка: [ng: areq] Аргумент «Навигация» не является функцией, получил undefined http://errors.angularjs.org/1.3 .14 ​​/ ng/areq? P0 = Navigation & p1 = not% 20a% 20function% 2C% 20got% 20undefined в REGEX_STRING_REGEXP (angular.js: 63) в assertArg (angular.js: 1580) при assertArgFn (angular.js: 1590) at angular.js: 8431 at angular.js: 7599 at forEach (angular.js: 331) в nodeLinkFn (angular.js: 7586) ' –

+0

Включили ли вы все контроллеры js-файлов? – mohamedrias

+0

Да: '<- сборка: JS ({. TMP, приложение}) скрипты/scripts.js -> <сценарий SRC = "скрипты/app.js"> <сценарий SRC =" скрипты/контроллеры/navigation.js "> ' –

Смежные вопросы