2013-06-18 106 views
0

我敢肯定,这是一个非常愚蠢的问题,但我是新来的angularjs,并试图找到解决方案,但似乎没有任何工作。这可能是我解释路由器错了。没有加载angularjs控制器(不使用ng控制器)

我的控制器只在我将ng-controller添加到html文件时加载,如果我不是这样,但我认为路由器会照顾它。我在这个例子中使用了requirejs并缩小了我的脚本。

的index.html

<!doctype html> 
<html ng-app> 
<head> 
    <!-- load our application --> 
    <script src="assets/vendor/requirejs/require.js" data-main="assets/js/config"></script> 
</head> 

<body id="splash"> 
hehe my page 
</body> 
</html> 

config.js

requirejs.config({ 
    baseUrl: 'assets/js', 
    paths: { 
    angular: '..\\vendor\\angularjs\\angular', 
    bootstrap: '..\\vendor\\bootstrap', 
    jquery: '..\\vendor\\jquery\\jquery' 
    }, 
    shim: { 
    bootstrap: [ 
     'jquery' 
    ], 
    angular: { 
     deps: ['jquery'], 
     exports: 'angular' 
    } 
    } 
}); 

require(['app/app']); 

app.js

define(['angular'], function (angular) { 
    angular.module('fettnerd.controllers', []); 
    angular.module('fettnerd', ['fettnerd.controllers']); 

    require(['app/routing'], function() { 
     angular.bootstrap(document, ['fettnerd']); 
    }); 
}); 

router.js

define(['angular', 'app/controllers/IndexCtrl'], function(angular) { 
angular.module('fettnerd') 
    .config(function($routeProvider, $locationProvider) { 
     $locationProvider.html5Mode(true); // we want history api 

     $routeProvider.when("/home", { 
       controller: "IndexCtrl" 
      }); 
     $routeProvider.otherwise({redirectTo: '/home'}); 
    }); 
}); 

个IndexCtrl.js

define(['angular', 'jquery'], function(angular, $) { 
    angular.module('fettnerd.controllers') 
     .controller('IndexCtrl', function($scope) { 
      console.log('test'); 
      $scope.login = function(e) { 
       alert('Soon. How soon? Very soon.'); 
      } 
     }); 
}); 

回答

2

你缺少在您的index.html ng-view

ngView是由包括 当前路线的渲染模板到主布局 (index.html的)文件补充了$航线的一个指令。每当当前路线发生变化时,包含的 视图将根据$ route 服务的配置随其更改。

<body id="splash" ng-view> 
</body> 
+0

哈哈我知道这真的很愚蠢。非常感谢! – wardpeet