- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个路线提供者,它要求在执行路线之前解析一些数据,如下所示:
$routeProvider.when("/", {
template: '<home message="$resolve.getMessage"></home>',
resolve: {
getMessage: getMessage
}
})
然后数据被传递到我的主组件并进行绑定(bind)以允许从 Controller 访问它,如下所示:
.component('home', {
templateUrl: '/app/content/home.component.html',
bindings: {
message: '='
},
controller: 'HomeController'
});
当尝试在 Controller 加载时立即访问消息中的数据时(我的印象是 Controller 在 routeProvider 中的解析函数解析之前不会执行其代码......)我想出了一个 undefined variable 。
function HomeController() {
var vm = this;
console.log(vm.message); //undefined
setTimeout(function () {
console.log(vm.message); //properly defined
}, 1000);
}
超时函数中的代码正确执行数据。我再次感到 Controller 代码在收到来自 resolve promise 的数据之前不会被调用/执行。我觉得我一定是在这个逻辑上犯了错误。
任何人都可以提供有关为什么即使在使用 resolve 时数据也会延迟到组件 Controller 的信息吗?
谢谢!
最佳答案
因为您正在调用 $resolve
。你不应该在你的 html 中调用它。
定义一个 Controller ,它使用带有 resolve 的服务:
$routeProvider.when("/", {
template: '<home message="homeMessage"></home>',
controller : 'MyRouteController',
resolve: {
message : getMessage
//getMessage can be async
}
})
app.controller("MyRouteController", function ($scope, message) {
$scope.homeMessage = message;
});
现在您可以将它发送到您的组件。
信息
我建议在这种情况下使用 templateUrl。
如果您的路线是“/home”,那么将其命名为:
controller : HomeController
templateUrl : 'home.html'
如果你想使用一个组件来显示主页消息,那么将它命名为:
component : home-message.component.js
controller : HomeMessageController
templateUrl : 'home-message.html'
不要忘记:路由 Controller 和组件 Controller 是不同的!
关于javascript - Angular $routeProvider 解决了组件 Controller 无法立即使用数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438952/
我刚刚开始学习 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路线和模板。我可以转到正确页面
我是一名优秀的程序员,十分优秀!