结合角度与要求

dan*_*tch 1 requirejs angularjs

我经历了这个教程.现在我正在尝试合并需求

我找到了这个解释.

我目前收到错误

Object #<Object> has no method 'unshift'
Run Code Online (Sandbox Code Playgroud)

这是导致错误的代码

require(['jquery', 'angular', 'app/routes/app'], function ($, angular, mainRoutes) {
    //tried this way as well
    //$(function () { // using jQuery because it will run this even if DOM load already happened
    //   angular.bootstrap(document, ['mainApp']);
    //});
    require(['Scripts/app/modules/mainApp.js'], function (mainApp) {
         angular.bootstrap(document.body, [mainApp]);//based of orginal answer
    })
});
Run Code Online (Sandbox Code Playgroud)

我的app.js文件

define(['app/modules/mainApp', 'app/controller/controllers'], function (mainApp) {
  return mainApp.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
      when('/phones', {
        templateUrl: 'Templates/phone-list.html',
        controller: 'PhoneListCtrl'
      }).
      when('/phones/:phoneId', {
        templateUrl: 'Templates/phone-detail.html',
        controller: 'PhoneDetailCtrl'
      }).
      otherwise({
        redirectTo: '/phones'
      });
   }]);
});
Run Code Online (Sandbox Code Playgroud)

和我的mainApp.js文件

define(['angular', 'angular-resource'], function (angular) {
    return angular.module('mainApp', ['ngResource']);
});
Run Code Online (Sandbox Code Playgroud)

还有其他文件,我没有显示(控制器,服务)但我不认为问题在于他们

UPDATE

我现在得到一个未定义喷油器的错误.

这是唯一被击中的断点,但该项目未定义. 在此输入图像描述

更新2

我更新了我的项目更像这个

我的main.js现在就是这个

require.config({
  baseUrl: '/Scripts/',
  urlArgs: "bust=" + (new Date()).getTime(),
  paths: {
    'jquery': 'lib/require-jquery',
    'angular': 'lib/angular/angular.min',
    'angular-resource': 'lib/angular/angular-resource.min',
  },
  shim: {
     'angular': { 'exports': 'angular' },
     'angular-resource': { deps: ['angular'] },
     'jQuery': { 'exports': 'jQuery' },
  },
  priority: [
     'angular'
  ]

});

 require(['angular', 'app/modules/app', 'app/routes/routes'], function (angular, app, routes) {
       var $html = angular.element(document.getElementsByTagName('html')[0]);
       angular.element().ready(function () { //breakpoint here
           $html.addClass('ng-app');
           angular.bootstrap($html, [app.name]);
       });
    });
Run Code Online (Sandbox Code Playgroud)

如果我在角元素上放置一个断点并在控制台中运行测试

(app == routes)
 true
Run Code Online (Sandbox Code Playgroud)

app应该等于路线吗?

Jon*_* M. 6

bootstrap方法的第二个参数应该是一个数组,我对下面的代码进行了更改.

require(['jquery', 'angular', 'app/routes/app'], function ($, angular, mainRoutes) {
    //tried this way as well
    //$(function () { // using jQuery because it will run this even if DOM load already happened
    //   angular.bootstrap(document, ['mainApp']);
    //});
    require(['Scripts/app/modules/mainApp.js'], function (mainApp) {
         angular.bootstrap(document.body, [mainApp]);
    })
});
Run Code Online (Sandbox Code Playgroud)