- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
AngularJs 文档说,在配置 $routeProvider 时,您可以在路由对象中为 Controller 和 templateUrl 指定字符串或函数,但是在使用函数根据 $ 动态确定 Controller 时遇到问题位置参数。我有以下路由配置:
$routeProvider
.when( '/workspace/:workspaceId/product/:productId/item/:itemType/:itemId/edit', {
templateUrl: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'topic.tpl.html';
case 'course':
return 'course.tpl.html';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
},
controller: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'TopicController';
case 'course':
return 'CourseController';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
}
} );
加载应用程序时出现以下错误:
Error: [$injector:unpr] Unknown provider: paramProvider <- param
我在这里遗漏了任何明显的东西吗?将 Controller 切换为使用字符串而不是函数可以解决此问题。
看起来有些人以前遇到过这个问题(例如 here ),但我很困惑为什么这不起作用,正如文档建议的那样。
任何帮助将不胜感激!
约瑟夫。
最佳答案
我认为问题的一部分可能是,当您向 Controller 提供函数而不是字符串时,它不是一个旨在返回 Controller 名称的函数,而是一个旨在充当 Controller 的函数。
看一下以下内容 - 路线/动态 Controller 行为似乎有效。我正在使用 $controller
按名称实例化 Controller 。因此,在这种情况下,我实际上并没有动态返回不同的 Controller ,而是在我提供给 $routeProvider
的匿名 Controller 中实例化一个新 Controller 。
这是否是实现预期最终结果的最佳方式可能是另一回事。 ;) angular-ui/ui-router 项目非常受欢迎。
angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when('/workspace/:workspaceId/product/:productId/item/:itemType/:itemId/edit', {
template: '<h1>{{title}}</h1><p>{{test}}</p>',
controller: function($scope, $routeParams, $controller) {
switch ($routeParams.itemType) {
case 'topic':
$controller('TopicController', {
$scope: $scope
});
break;
case 'course':
$controller('CourseController', {
$scope: $scope
});
break;
}
}
})
.when('/', {
template: '<h1>Home</h1><p>{{test}}</p>',
controller: 'home'
});
}).controller('home', function($scope) {
$scope.test = 'Hello world.';
}).controller('TopicController', function($scope) {
$scope.title = "Topic";
$scope.test = 'Success!';
}).controller('CourseController', function($scope) {
$scope.title = "Course";
$scope.test = 'Success again!';
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular-route.min.js"></script>
<div ng-app="myApp">
<a href="#/workspace/1/product/1/item/topic/1/edit">Topic</a>
<a href="#/workspace/1/product/1/item/course/1/edit">Course</a>
<div ng-view />
</div>
关于javascript - AngularJs:具有动态 Controller 名称的 $routeProvider 将不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442865/
我刚刚开始学习 AngularJS,但我多次注意到同样的事情,当我们开始用 AngularJS 编写函数时,我注意到有些人像这样定义他们将要使用的函数 var mainApp = angular.mo
我遇到了一点挑战,还没有找到解决方案。当我尝试了一些事情时,我正在请求你的帮助,所以可能有人可以引导我走向正确的方向。 我在 AngularJS 中有一个 routes.js。我正在使用 $route
我正在尝试实现 named routes ,所以我不必编写整个路径(经常更改)。 我在想我可以写一个服务来返回定义的路由列表和一个将对象转换为路由的过滤器 使用示例如下所示: Click here!
AngularJS documentation表示 ngRoute $routeProvider 有一个 reload 方法。 reload() Causes $route service to re
我正在尝试了解 AngularJS 中的路由如何工作,以制作一个小应用程序,允许用户登录并在实时提要中撰写评论。然而,路线的整个概念对我来说有点模糊,我无法正确理解这一点。 我的标准index.htm
我在grails应用程序中使用angularJS。在此之前,我尝试了互联网上的样本。我试图在我的主 View 中将angularJS $ routeProvider用于部分 View 。我的工作流程如
所以我的网站并不是 100% 都是“由 AngularJS 提供支持”,其中一些只是简单的静态 HTML,比如登陆页面或面向内容的内容,这是简单的 HTML,原因很明显。 我似乎可以获得正常导航的链接
我正在使用 this Angular 路由教程。这是它给出的使用 resolve 的示例: $routeProvider .when("/news", { templateUr
我有一个非常简单的要求。 我有 3 个用户 Angular 色: 猫用户 LICUSER 所有用户 我在 $rootScope.userRole 变量中拥有用户 Angular 色的值。 我在 Ang
我有两条路线通向相同的 View 和 Controller (即我只是传入一个 id 以在 $routeParams 中访问并在其上执行 Controller 逻辑): $routeProvider
我已经添加了这样的脚本 我在我的 test.js 中做了这个 var app = angular.module('MyApp', ['ngRoute']).config
我已经尝试了几种不同的方式,我将尝试使用所有不同的方式重定向到不同的页面,但所有这些方式都出现 404 错误。 index.html 这个页面没问题,根正在渲染: You are using
有没有办法编写一个方法来解析即将到来的 $location.path 并加载特定的 html 模板或应用 $route。目前,我的应用程序有这个长长的“时间”列表,完成后将增加一倍或三倍。 .con
我已阅读与同一问题相关的帖子并交叉验证了我的代码,但问题仍然存在。 以下是我的index.html文件 Webs
我正在尝试编写 Angular.js 教程。但我想我没有正确进行路由。我已正确遵循文档,但是当我单击超链接时,angular 不会路由到指定的 html。请帮帮我。我是 Angular 的新手。提前致
我有一个问题和疑问 我的客户端使用: 以及以下脚本: 我的 routProvider 是: angular.module('myApp', []). c
我正在使用 USB 设备构建一个 chrome 应用程序。在我的主要 app.js 中,我希望始终检查设备何时添加/删除并更改 url。 angular.module('rfApp', [ '
如果 sessionStorage.logged 设置为 true,我想将 mypage 重定向到主页。下面是我的代码。为什么我下面的代码不起作用。 因为我是 angularjs 的新手,所以我不知道
我有一个应用程序,我没有使用路由提供程序,但我仍然想对更改的哈希值采取行动。当我手动更新 URL 而不是链接时, Controller 中的普通 window.onhashchange 起作用: Li
我的 app.js 中有以下 2 条路线文件,出于某种原因,我不知道何时尝试导航到 /clients/new-invoice我看到了 /clients/:clientID路线和模板。我可以转到正确页面
我是一名优秀的程序员,十分优秀!