当使用AngularJS服务尝试在两个控制器之间传递数据时,我的第二个控制器在尝试从服务访问数据时总是收到未定义的.我猜这是因为第一个服务执行$ window.location.href并且我认为这是清除服务中的数据?有没有办法让我将URL更改为新位置,并将数据保留在第二个控制器的服务中?当我运行下面的代码时,第二个控制器中的警报始终是未定义的.
app.js(定义服务的地方)
var app = angular.module('SetTrackerApp', ['$strap.directives', 'ngCookies']);
app.config(function ($routeProvider)
{
$routeProvider
.when('/app', {templateUrl: 'partials/addset.html', controller:'SetController'})
.when('/profile', {templateUrl: 'partials/profile.html', controller:'ProfileController'})
.otherwise({templateUrl: '/partials/addset.html', controller:'SetController'});
});
app.factory('userService', function() {
var userData = [
{yearSetCount: 0}
];
return {
user:function() {
return userData;
},
setEmail: function(email) {
userData.email = email;
},
getEmail: function() {
return userData.email;
},
setSetCount: function(setCount) {
userData.yearSetCount = setCount;
},
getSetCount: function() {
return userData.yearSetCount;
}
};
});
Run Code Online (Sandbox Code Playgroud)
logincontroller.js :(控制器1在服务中设置值)
app.controller('LoginController', function ($scope, $http, $window, userService) {
$scope.login …Run Code Online (Sandbox Code Playgroud) 我有一个注入第三方网站的AngularJS应用程序.它将动态内容注入第三方页面的div.Google正在成功为此动态内容编制索引,但似乎并未抓取动态内容中的链接.链接在动态内容中看起来像这样:
<a href="http://www.example.com/support?title=Example Title&titleId=12345">Link Here</a>
Run Code Online (Sandbox Code Playgroud)
我正在使用链接的查询参数而不是实际的url结构,如:
http://www.example.com/support/title/Example Title/titleId/12345
Run Code Online (Sandbox Code Playgroud)
我必须使用查询参数,因为我不希望第三方网站必须更改其Web服务器配置以重定向不正确的URL.
单击链接时,我使用$ locationService更新浏览器中的URL,然后我的角度应用程序响应相应的响应.主要是基于查询参数显示相关内容,设置页面标题和元描述.
我读过的很多文章都使用angularJS和模板中的路由提供程序,但我不确定为什么这会对爬虫产生影响?
我已经读过google应该将带有查询参数的网址视为单独的网页,因此我不认为这应该是问题:https: //webmasters.googleblog.com/2008/09/dynamic-urls-vs-static-urls. HTML
我没有尝试过的唯一事情是1.提供带有查询参数的网址的站点地图,以及2.将其他页面的静态链接添加到动态链接以帮助谷歌发现这些页面.
任何帮助,想法或见解将不胜感激.