2014-12-21 10 views
6

मैंने पहले इसके लिए एनजी-रूट का उपयोग किया और यह ठीक काम किया, लेकिन यूआई राउटर के साथ, लिंक अब क्लिक करने योग्य नहीं हैं, या कम से कम अधिकांश समय वे नहीं हैं। जब वे होते हैं, जो बहुत यादृच्छिक होते हैं, तो वे HTML टेम्पलेट्स का उपयोग नहीं करते हैं जिनका मैं उपयोग कर रहा हूं।यूआई-एसआरई क्लिक करने योग्य लिंक उत्पन्न नहीं कर रहा/काम नहीं कर रहा

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; 

}); 

मैं AngularJS पर SitePoint ebook में निर्देशों का पालन कर रहा हूँ, इसलिए मैं वास्तव में यकीन है कि मैं क्या कर रहा हूँ नहीं कर रहा हूँ गलत करना या मुझे क्या याद आया।

http://plnkr.co/edit/amh3nZmyB7lC2IQi3DIn

+0

मुझे आपके मार्कअप में कहीं भी 'ui-view' नहीं दिखाई देता है, इसलिए आपके राज्य के विचारों को अधिकतर प्रस्तुत नहीं किया जा रहा है और – JAAulde

+0

@JAAulde इंजेक्शन दिया गया है, क्या मुझे इसका उपयोग एनजी-व्यू के बजाय या इसके संयोजन के साथ करना चाहिए? –

+0

आपकी मुख्य HTML फ़ाइल में एक एकल 'ui-view' मौजूद होना चाहिए। आपके शीर्ष स्तर के राज्यों को प्रस्तुत किया जाएगा और वहां इंजेक्शन दिया जाएगा। आपको 'एनजी-व्यू' की आवश्यकता नहीं है। राज्यों में सबस्टेट हो सकते हैं, और एक राज्य के प्रत्येक टेम्पलेट जिसमें एक सबस्टेट होता है उसे 'ui-view' होना चाहिए जहां इसके प्रस्तुत किए गए सबस्टेट इंजेक्शन दिए जाएंगे। – JAAulde

उत्तर

9

मैं तो अपने राज्यों के विचारों से ज्यादातर की संभावना है नहीं गाया जा रहा है और इंजेक्शन अपने मार्कअप में कहीं भी एक ui-view नहीं दिख रहा है,।

आपको ng-view की आवश्यकता नहीं है। आपकी मुख्य HTML फ़ाइल में एक ui-view मौजूद होना चाहिए। आपके शीर्ष स्तर के राज्यों को प्रस्तुत किया जाएगा और वहां इंजेक्शन दिया जाएगा। राज्यों में सबस्टेट हो सकते हैं, और एक राज्य के प्रत्येक टेम्पलेट जिसमें एक सबस्टेट होता है, उसके पास ui-view होना चाहिए जहां इसके प्रस्तुत किए गए सबस्टेट इंजेक्शन दिए जाएंगे।

इसे काम करने की मूल बातें के लिए ui-router's readme के माध्यम से देखें। इसके अलावा, उनके पास demo app अच्छा है, जिसका स्रोत वास्तव में मुझे यह समझने में मदद करता है कि यह राज्य रूटिंग इंजन किस बारे में है और इसका उपयोग कैसे किया जाए।

2

सहायक जानकारी, उम्मीद है कि ...

हालांकि जवाब ऊपर सही (ui-view लापता, ui.router, आदि को संदर्भित) कर रहे हैं, मैं स्थितियों में चलाने की है, जहां एक दृश्य के लोड करने के लिए लिंक का कारण होगा के साथ अन्य समस्याओं उत्पन्न नहीं किया जाएगा। उदाहरण के लिए, आज सुबह मैं मॉड्यूल angular-cache को संदर्भित करना भूल गया था और CacheFactory के साथ किसी समस्या में नहीं चल रहा था (ui.router से पूरी तरह से असंबंधित)। जब तक संदर्भ हल नहीं किए गए, ui.router पानी में मर गया था।

+0

इससे मेरी मदद मिली। मुझे एक असंबंधित त्रुटि (शून्य जांच) हो रही थी और यह ui-sref के डिफ़ॉल्ट व्यवहार को रोक रहा था। धन्यवाद! – Tico

संबंधित मुद्दे