我在 Angular 中为几个 View 定义了路由,一个是默认的“票证”,另一个是编辑 View “票证”。由于某种原因,当我将“编辑”编码为网址时,票证路线可以正常打开。如果我使用 ng-click 编写“编辑”链接以在 Controller 上运行方法并更改位置(即 $location.path('/ticket/2')),它会加载正确的 Controller “TicketController”,但永远不会似乎正在加载 View 。事实上,加载正确的 Controller ,然后加载默认 Controller 。
在下面的 Plunker 中,您将看到每个详细信息项的两个编辑链接,“编辑”是带有 href 集的 URL(工作正常),另一个“编辑 2”使用 ng-click 指令。
http://plnkr.co/edit/aY7fSvVJCIaVYnCHXcq6?p=preview
(function () {
var app = angular.module('SimpleTicket', ['ngRoute']);
app.config(function ($httpProvider, $routeProvider) {
$routeProvider.
when('/ticket/:ticketId',
{
templateUrl: 'ticket.html',
controller: 'TicketController as vm'
}).
when('/', {
templateUrl: 'tickets.html',
controller: 'TicketsController as vm'
}).
otherwise({
redirectTo: '/'
});
});
var TicketController = function ($scope, $log, $routeParams, $location) {
var vm = this;
$log.log('TicketController');
var saveTicket = function () {
$log.log('Item saved')
$location.path('/');
};
vm.saveTicket = saveTicket;
vm.ticket = {TicketId:2,Title:'Ticket 2',Body:'Body 2'};
};
app.controller("TicketController", TicketController);
var TicketsController = function ($location, $log) {
var vm = this;
$log.log('TicketsController');
var editTicket = function () {
$log.log('editTicket');
$location.path('/ticket/2');
};
vm.editTicket = editTicket;
vm.tickets = [{TicketId:1,Title:'Ticket 1',Body:'Body 1'},
{TicketId:2,Title:'Ticket 2',Body:'Body 2'}];
};
app.controller("TicketsController", TicketsController);
}());
最佳答案
只需删除 href="#"
至href=""
来自tickets.html
关于javascript - Angular View 未加载,但 Controller 正在加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558874/