2014-12-21 13 views
6

Daha önce bunun için ng-route kullanmıştım ve gayet iyi çalışıyordu, ancak UI Router ile bağlantılar artık tıklanmıyor ya da en azından çoğu zaman değil. Çok rastlantısal olduklarında, kullandıkları html şablonlarını görüntülemiyorlar.Ui-sref tıklanabilir linkler üretemiyor/çalışmıyor

HTML:

<head> 
    <title>Tutorial</title> 

    <script src="lib/angular/angular.js"></script> 
    <script src="lib/angular/angular-ui-router.min.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 

</head> 

<body> 

    <ng-view></ng-view> 

    <ul class="menu"> 
     <li><a ui-sref="view1">view1</a></li> 
     <li><a ui-sref="view2">view2</a></li> 
    </ul> 

.js

angular.module('myApp', [ 
    'myApp.controllers', 
    'ui.router' 
    ]); 

angular.module('myApp').config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider.state('view1',{ 
     url: '/view1', 
     controller:'Controller1', 
     templateUrl:'/view1.html' 
    }).state('view2', { 
     url: '/view2/:firstname/:lastname', 
     controller: 'Controller2', 
     resolve: { 
      names: function() { 
       return ['Misko', 'Vojta', 'Brad']; 
      } 
     }, 
     templateUrl: '/view2.html' 
    }); 

    $urlRouterProvider.otherwise('/view1'); 

}); 


angular.module('myApp.controllers', []).controller('Controller1', function($scope, $location, $state) { 

    $scope.loadView2=function() { 
     $state.go('view2', { 
      firstname: $scope.firstname, 
      lastname: $scope.lastname 
     }); 
    }; 
}).controller('Controller2', function($scope, $stateParams, names) { 
    $scope.firstname = $stateParams.firstname; 
    $scope.lastname = $stateParams.lastname; 
    $scope.names = names; 

}); 

Ben angularjs üzerinde SitePoint e-kitap yönergeleri takip ediyorum, bu yüzden ben olduğum şey gerçekten emin değilim yanlış ya da neyi özledim.

http://plnkr.co/edit/amh3nZmyB7lC2IQi3DIn

+0

İşaretlemenizin herhangi bir yerinde bir "ui-view" göremiyorum, bu nedenle durumlarınızın büyük olasılıkla görüntülenmesi ve enjekte edilmemesi görüntüleniyor – JAAulde

+0

@JAAulde Bunu ng görünümü yerine veya bununla birlikte kullanmalı mıyım? –

+0

Ana HTML dosyanızda tek bir "ui-view" bulunmalıdır. Üst düzey durumlarınız burada oluşturulacak ve enjekte edilecektir. "Ng-view" öğesine ihtiyacınız yok. Devletlerin sübvansiyonları olabilir ve bir altkümeye sahip olan bir devletin her bir şablonu, işlenmiş kaynaklarının enjekte edileceği bir “ui-görüş” e sahip olmalıdır. – JAAulde

cevap

9

Ben bu yüzden devletlerin görüşleri render ve enjekte ediliyor değil büyük olasılıkla, İşaretlemenize yerde bir ui-view görmüyorum.

ng-view'a ihtiyacınız yoktur. Ana HTML dosyanızda tek bir ui-view bulunmalıdır. Üst düzey durumlarınız burada oluşturulacak ve enjekte edilecektir. Devletlerin sübvansiyonları olabilir ve bir alt sektöre sahip olan bir devletin her bir şablonu, kendisine ait ikincil vergilerin enjekte edileceği bir kendi başına ui-view olmalıdır. Çalıştırmanın temelleri için ui-router's readme'a bakın. Ayrıca, onlar iyi bir demo app var, bu gerçekten bana bu durum yönlendirme motorunun ne hakkında olduğunu ve nasıl kullanılacağını anlamamda yardımcı oldu.

2

Yardımcı bilgiler, umarım ...

cevaplar yukarıdaki doğru (ui.router vs. referans, ui-view eksik) olmasına rağmen, ben durumlara nerelerde yayınlandığını bağlantılar neden olacaktır bakış yük ile diğer sorunlar oluşturulmuyor. Örneğin, bu sabah angular-cache modülüne başvurmayı unutmuşum ve CacheFactory yüklenemedi (ui.router ile tamamen ilgisiz). Referanslar çözülene kadar, suda ui.router öldü.

+0

Bu bana yardımcı oldu. İlgisiz bir hata yaşıyorum (boş kontrol) ve ui-sref'in varsayılan davranışını engelliyordu. Teşekkürler! – Tico

İlgili konular