2014-02-12 53 views
1

好像Angular.js UI路由器必須纔能有整個事情的工作有ui-view。這裏是沒有ui-view一個例子,路由不工作(無警報):http://plnkr.co/edit/e1vzj6pDdqADKJ2LSsd3?p=preview避免使用UI視在角UI路由器

HTML:

<!DOCTYPE html> 
<html ng-app="plunker"> 

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <link rel="stylesheet" href="style.css" /> 
    <script data-require="[email protected]" src="http://code.angularjs.org/1.2.12/angular.js" data-semver="1.2.12"></script> 
    <script data-require="[email protected]*" data-semver="0.2.8" src="http://angular-ui.github.io/ui-router/release/angular-ui-router.js"></script> 
    <script src="app.js"></script> 
    </head> 

    <body ng-controller="MainCtrl"> 
    <a href="#/link">Test</a> 
    <!--div ui-view></div--> 
    </body> 

</html> 

的Javascript:

var app = angular.module('plunker', ['ui.router']); 

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) { 

    $stateProvider 
    .state("link", { 
     url: "/link", 
     resolve: { 
     test: function() { 
      alert("Triggered resolve /link"); 
      return true; 
     } 
     } 
    }); 
}]); 

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
}); 

如果你把<div ui-view></div>回來,它會工作。

這沒什麼大不了的,因爲我可以將ui-view留空。我不使用ui-view(聽起來很奇怪),因爲ui-view取代了DOM。我只想切換我的container而不是完成翻錄和替換。

  1. ui-router作爲黑客留空是否正確?

  2. 有沒有辦法讓ui-router不需要ui-view

回答

2

您可以使用ng-show或ng-if來實現dom元素的切換。但我明白你的觀點,有時你需要使用ui-router作爲面向對象的位置管理工具。

你可以在你的<a>上使用ui-sref屬性,而不是純粹的href作爲黑客來到一個不知道從哪裏得到渲染的狀態。

我編輯您的plunkr證明:

http://plnkr.co/edit/KLm8HTIkvnbGzhzmwSwG?p=preview

基本不變

<a href="#/link">Test</a> 

到:

<a ui-sref="link">Test</a> 

我不知道的最佳做法或任何東西。這是一個很好的問題,我很抱歉,我不能完全回答你提出的第一點。不知道這是否正確,這取決於你如何使用ui-router。在一個相當大的應用程序中,我們有許多命名的視圖,然後我們使用ui-view,但是我可以看到有時它是無用的。

+0

在HTML中使用'ui-sref'作品並且沒有'ui-view'指令。我很好奇爲什麼會這樣。另外,如果我需要傳遞參數,我該如何使用'ui-sref',而不僅僅是'state' –

+0

我分叉併爲你創建了一個演示如何傳遞params的參數:http://plnkr.co/編輯/ L38Tz8CiUt4e4FV6Vmml?p =預覽。我可以看到在某些情況下,將這些東西傳遞給ui-router可能會有好處,但在大多數情況下,我會使用純粹的hrefs。如果你確實不需要渲染視圖,我仍然會使用一個emtpy ui-view,這會讓html代碼看起來更整潔。 –

+0

baba,你是否改變了你的plnkr代碼中的任何內容,因爲我沒有看到代碼通過params –