角度重定向到其他方式而不检测视图,但当我单击后退按钮时它可以工作
Angular redirecting to otherwise without detecting view but it works when i click back button
更新下面的答案或评论都没有帮助,我希望有人能给我正确的答案。
当我把这个网址放在我的浏览器中时 - 它带我查看我的水果并完美运行,
http://localhost:53052/AppTest.aspx#/fruits
但是当我转到我的home view
并单击按钮并尝试导航到'fruits'
视图时,它会将我重定向到http://localhost:53052/AppTest.aspx#/routeNotFound
但是当我单击浏览器的后退按钮时,它会返回到水果视图,然后如果我再次单击,它会返回到主视图。
所以这是树视图中发生的情况,
--> 单击主视图按钮(应导航到fruits view
,但它转到routeNotFound
视图(
-> 当我单击浏览器上的后退按钮时,它会转到fruits view
,然后如果我再次单击返回,它会转到Home view
这是我的路线,
(function () {
'use strict';
var app = angular.module('fruitApp');
app.constant('routes', getRoutes());
app.config(['$routeProvider', 'routes', routeConfigurator]);
function routeConfigurator($routeProvider, routes) {
routes.forEach(function (route) {
$routeProvider.when(route.url, route.config);
});
$routeProvider.otherwise({ redirectTo: '/routeNotFound' });
}
function getRoutes() {
return [
{
url: '/home',
config: {
templateUrl: 'App/templates/home.html',
}
},
{
url: '/fruits',
config: {
templateUrl: 'App/templates/fruits.html',
}
}
];
}
})();
主视图(我只用它来加载模块并将其他视图加载到其中(
<div data-ng-app="fruitApp">
<div data-ng-view="">
</div>
</div>
主页视图
<div data-ng-controller="home as vm">
<div data-ng-click="vm.goToFruits()">click Me!</div>
</div>
家庭控制器
(function () {
'use strict';
var controllerId = "home";
angular.module('fruitApp').controller(controllerId,
['$location', 'datacontext', home]);
function home($location, datacontext) {
var vm = this;
vm.goToFruits = goToFruits;
function goToFruits() {
$location.path('/fruits');
}
};
})();
水果景观
<div data-ng-controller="fruits as vm"> fruits </div>
水果控制器
(function () {
'use strict';
var controllerId = "fruits";
angular.module('fruitApp').controller(controllerId,
['$location', 'datacontext', fruits]);
function fruits($location, datacontext) {
var vm = this;
};
})();
我正在关注这个项目,所以如果我没有错过任何概念,像我一样定义模块应该不是问题吗?
https://github.com/OfficeDev/Learning-Path-Manager-Code-Sample/blob/master/App/learningPath/learningPaths.js
编辑
我尝试更改路由配置和控制器中的一些代码以使用ui-route
现在它将我带到水果视图(就像以前一样(,但它不再将我重定向到"否则"路由,但它仍然将 URL 更改为 /routeNotFound
..
更新
我最终使用 href 和 ng-href 来切换视图。
你的例子中有很多"绒毛"。我已经剥离了一些内容,您应该能够在此处看到 plunkr 演示 - 它有助于查看您是否在没有框架的情况下运行它 - http://run.plnkr.co/plunks/40eDlZfZQnAJRWxeg1ge/# 。
对我来说,它看起来工作得很好。我可以单击文本导航到"水果"控制器,然后按浏览器中的"返回"按钮返回"主页"。
关于代码的一些事项:
- 需要使用
app.module('fruitsApp', ['ngRoute']);
声明 app.module,以确保加载依赖项。 - 我删除了您的示例代码不需要知道的"数据上下文"等
- 我在路由中使用基本模板而不是模板 URL。
- 我已将默认路由重定向到
'/home'
- 这在您的上下文中有意义吗?
我给你的建议是删除你的代码片段,直到它开始工作,然后使用它来找出导致问题的确切原因。
我建议你走简单,首先使用函数路由和所需的依赖项来构建你的应用程序,然后再进行扩展和增强。你犯的一个大错误是你没有在你的水果应用程序中包含">ngRoute"。工作示例,您可以查看此 plunker ng 路由示例
(function () {
'use strict';
var app = angular.module('fruitsApp', ['ngRoute']);
app.constant('routes', getRoutes());
app.config(['$routeProvider', 'routes', routeConfigurator]);
function routeConfigurator($routeProvider, routes) {
routes.forEach(function (route) {
$routeProvider.when(route.url, route.config);
});
$routeProvider.otherwise({ redirectTo: '/home' });
}
function getRoutes() {
return [
{
url: '/home',
config: {
templateUrl: 'home.html',
controller:'home'
}
},
{
url: '/fruits',
config: {
templateUrl: 'fruit.html',
controller:'fruits'
}
}
];
}
app.controller("home", ['$location',
function($location) {
this.goToFruits = function() {
$location.path('/fruits');
};
}
]);
app.controller("fruits", ['$scope', '$route', '$routeParams','$location',
function($scope, $route, $routeParams, $location) {
$scope.fruitList = [
{name:'Apple'},
{name:'Apricot'},
{name:'Banana'},
{name:'Banana'},
{name:'Bilberry'},
{name:'Blackberry'} ];
$scope.goBackHome= function(){
$location.path('/home');
};
}
]);
})();
- 单击按钮以等待单击按钮
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- 单击按钮时循环浏览匹配的表
- 单击按钮后启动javascript提示
- 单击按钮时在灯箱中显示不同的内容
- 单击按钮时加载数据
- 如何在不需要单击按钮的情况下获取选项的值
- 单击按钮时显示随机字符串
- 在单击按钮前后禁用提交按钮
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 单击按钮时Div Increment
- 若单击按钮,则更改Javascript中的变量
- 单击按钮更改加载到表中的JSON文件
- 如何在单击按钮时显示2行1列的表格
- 单击按钮前运行事件
- 如何删除父表行时;删除“;在React JS中单击按钮
- 如何创建一个表并在单击按钮时插入此标签和文本字段
- JavaScript-onClick将按钮ID或单击按钮的文本传递给函数
- 如何在单击按钮时显示一个分区,同时隐藏另一个分区