- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要加入一个 Angular 项目,但对此几乎没有经验,有人可以帮助我如何向 app.routes.js 添加参数吗?
我有这个例子:
.state('product-article', {
resolve: {
productArticleData: getProductArticleData
},
url: '/product-article',
templateUrl: siteInfo.templateRoot + '/productArticlePage.html',
controller: 'ProductArticlePageController',
controllerAs: 'ProductArticlePageCtrl'
})
在同一个文件中我可以找到:
function getProductArticleData(ProductArticleApiService) {
return ProductArticleApiService.getData();
}
在 ProductArticleApiService.js 中我发现了这个:
angular.module('ourApp').factory('ProductArticleApiService', ['apiBase','$http', ProductArticleApiService]);
function ProductArticleApiService(apiBase, $http) {
return {
getData: function() {
return $http({
method: 'GET',
url: apiBase + '/product_article/98',
headers: {
'X-Siteaccess': 'eng'
}
});
}
};
};
现在我的任务是使其更加动态,以替换最后一个文件中的硬编码“98”和“eng”,因此我将这些参数添加到 getData() 函数中,并将它们也添加到 getProductArticleData 函数中:
function getProductArticleData(ProductArticleApiService, article_id, siteaccess) {
return ProductArticleApiService.getData(article_id, siteaccess);
}
但是当我尝试在 app.routes.js 中执行此操作时,事情出了问题:
resolve: {
productArticleData: getProductArticleData("98","eng")
},
(我知道,仍然不是动态的,但我认为这是要走的路)这使我的应用程序崩溃。这是有道理的,因为我只给需要 3 个参数的函数提供 2 个参数。但是,在我进行所有这些更改之前,它起作用了。该应用程序怎么可能使用原始代码运行?在resolve:部分中,我没有将ProductArticleApiService作为参数提供给getProductArticleData函数,但它可以工作,但是当我添加额外的参数时,它就不行了?
最佳答案
上述问题(为什么它不能按预期工作)是 getProductArticleData
不实际上被视为正常函数。它的行为更像 Controller 中看到的函数,其中指定的参数实际上将由 Angular 注入(inject):
angular.module("ourApp").controller(function ($scope, Service1, Service2) {
// some code
});
因此,在您的示例中,ProductArticleApiService
是一个将被注入(inject)的 Angular 服务,您的应用程序可能已损坏,因为 Angular 现在正在尝试注入(inject) article_id
和 siteaccess
作为服务。因为(我假设)没有这样的服务,所以它失败了。
我怀疑您想要做的是允许在服务外部指定 $http
请求的参数。所以这可能就是您正在寻找的:
.state('product-article', {
resolve: {
// I moved the function here for clarity
// added $stateParams to be injected
productArticleData: function (ProductArticleApiService, $stateParams) {
return ProductArticleApiService.getData($stateParams.articleId, $stateParams.siteaccess);
}
},
// changed url
url: '/product-article/:articleId/:siteaccess',
templateUrl: siteInfo.templateRoot + '/productArticlePage.html',
controller: 'ProductArticlePageController',
controllerAs: 'ProductArticlePageCtrl'
})
这里需要注意一些事情:
:articleId
和 siteaccess
,现在可以将其称为 /product-article/98/en
>ProductArticleApiService
和 $sateParams
。 $stateParams
是一个“服务”,提供上面的 url 参数。我强烈建议你深入了解 Angular 中的路由是如何工作的,特别是 ngRoute和 ui-router (它们相关但不同+您在代码中使用 ui-router)。
希望这足以帮助您入门。评论以澄清任何事情。
关于javascript - 在 Angular app.routes.js 解析函数中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618360/
您好,如果没有身份验证,我尝试保护路由,但它不起作用 警告:您不应在同一个 route 使用路线组件和路线渲染;路线渲染将被忽略 App.js import React, { Fragment,
几乎我见过的每个示例,app.js 都使用 require 和路径 ./。我想知道为什么我们不能只使用 /。例如,为什么我们不能执行以下操作。 var express = require('expre
如果router.all()只匹配所有方法,是否可以用router.use()代替?router.use() 和 router.route() 之间有什么区别? 最佳答案 router.all:这意味
在我的 Symfony应用程序我想根据当前用户的文化选择 routing.yml; 'en' => routing.en.yml 'no' => routing.no.yml 等等。 关于如何做到这一
我正在使用 React Router v6 并为我的应用程序创建私有(private)路由。 在文件 PrivateRoute.js 中,我有代码 import React from 'react';
这个问题在这里已经有了答案: Error "Error: A is only ever to be used as the child of element" (14 个回答) Error: [P
我正在关注 Ember Quick Start guide (ember-cli v 2.11),并按照说明构建玩具应用程序。在“定义路线”部分,说明说要运行命令 ember generate rou
这个问题在这里已经有了答案: ReactJS: [Home] is not a component. All component children of must be a or (5 个答
这个问题在这里已经有了答案: ReactJS: [Home] is not a component. All component children of must be a or (5 个答
单击“开始测验”按钮时,我试图导航到“/quiz”。 但是,当我编译我的代码时,我在网站应用程序上收到以下错误:[Home] is not a component. All component ch
我有一点咸菜。我正在使用路由保护(实现 CanActivate 接口(interface))来检查用户是否被授予访问特定路由的权限: const routes: Routes = [ {
我正在尝试测试我的应用程序正在使用的引擎内部的 Controller 。规范不在引擎中,而是在应用程序本身中(我试图在引擎中进行测试,但也遇到了问题)。 我的引擎有以下 routes.rb: Revi
我是Remix的新手,我正在尝试使用V2路由方法实现特定的路由解决方案。。这是一个人为的例子,不是真实的东西,只是为了说明这一点。。我想要的URL方案是:。我从以下几条路线开始:。App/routes
我正在尝试从 rails 2.3.x(使用 subdomain_routes 插件)转换一些子域路由,如下所示: map.subdomain :biz do |biz| biz.resources
我将 Symfony 的 3.1 路由组件用作独立组件。 我想调试路由。 据此: http://symfony.com/doc/current/routing/debug.html 这是通过运行以下命
我是 Sparkjava 的新手,总体上喜欢它。但是,是否必须在 main 方法中定义新的路由/端点?对于任何重要的 Web 应用程序,这将导致一个非常长的 main 方法,或者我需要有多个 main
我刚刚使用node.js 和express.js 开发了一个原型(prototype)。在这里,我使用了 Express 路由来对后端进行 CRUD。 server.js 文件: app.get('/
我不明白 Angular 4 中路由的一些基本概念。 index.html: 文件结构: - app |- app.routings.ts |- collections |-- collection
我在反应路线和理解合成路线方面遇到了一些困难。我尝试了一些代码,但不幸的是,它不能像预期的那样工作。“/”路径运行得很好,但是,当我尝试访问“/Child”时,它似乎不起作用。我认为包装器路由}/>可
我正在尝试使用 cakephp 3 实现 REST api。 为了给我的问题提供一个易于重现的示例,我从全新安装 cakephp 3.1.11 开始。 在 config/routes.php 中,我添
我是一名优秀的程序员,十分优秀!