রাষ্ট্র থেকে '...' সমাধান করতে পারেনি


99

এই প্রথম আমি ইউআই-রাউটার ব্যবহার করার চেষ্টা করছি।

এখানে আমার app.js

angular.module('myApp', ['ionic'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})

.config(function($stateProvider, $urlRouterProvider){
  $urlRouterProvider.otherwise("/index.html");

  $stateProvider.state('index', {
    url: '/'
    template: "index.html",
    controller: 'loginCtrl'
  });


  $stateProvider.state('register', {
    url: "/register"
    template: "register.html",
    controller: 'registerCtrl'
  });
})

আপনি দেখতে পাচ্ছেন, আমার দুটি রাজ্য রয়েছে। আমি এইভাবে রাষ্ট্র নিবন্ধনের চেষ্টা করছি:

<a ui-sref="register">
  <button class="button button-balanced">
    Create an account
  </button>
</a>

তবে আমি পাচ্ছি

রাষ্ট্র থেকে 'নিবন্ধক' সমাধান করতে পারেনি '

ব্যতিক্রম এখানে কি সমস্যা?


এটি একদম নির্বোধ, তবে আমি দেখতে পাচ্ছি আপনি 'মাই অ্যাপ' মডিউলটি তৈরি করছেন এবং 'আয়নিক'কে নির্ভরতা হিসাবে তালিকাভুক্ত করছেন, তবে আমি' ইউআই-রাউটার 'নির্ভরতা হিসাবে তালিকাভুক্ত দেখছি না। আপনি এটি অন্য কোথাও অন্তর্ভুক্ত করছেন?
ডেডব্যাবাইকিটেন

4
@ ডিডবাবাইকিটেন, আয়নিক সেদিকে খেয়াল রাখে।
রজার্স সাম্পাও

4
@ রোজারসাম্পাইও - আমি সবেমাত্র জানতে পেরেছিলাম যে আমি আগে আয়নিক ব্যবহার করিনি, তবে এটি এখন একটি মোবাইল প্রকল্পের জন্য ব্যবহার করছি। এটা বেশ অবিশ্বাস্য।
ডেডব্যাবাইকিটেন

উত্তর:


70

এই ধরণের ত্রুটিটির অর্থ সাধারণত (জেএস) কোডের কিছু অংশ লোড হয়নি। যে রাজ্যের ভিতরে রয়েছে ui-srefতা অনুপস্থিত।

নেই ওয়ার্কিং উদাহরণ

আমি আয়নিকের বিশেষজ্ঞ নই, সুতরাং এই উদাহরণটি দেখানো উচিত যে এটি কাজ করবে, তবে আমি আরও কিছু কৌশল ব্যবহার করেছি (ট্যাবগুলির জন্য পিতামাতার)

এটি একটি সামঞ্জস্য স্থিতিশীল ডিফ:

.config(function($stateProvider, $urlRouterProvider){
  $urlRouterProvider.otherwise("/index.html");

    $stateProvider

    .state('app', {
      abstract: true,
      templateUrl: "tpl.menu.html",
    })

  $stateProvider.state('index', {
    url: '/',
    templateUrl: "tpl.index.html",
    parent: "app",
  });


  $stateProvider.state('register', {
    url: "/register",
    templateUrl: "tpl.register.html",
    parent: "app",
  });

  $urlRouterProvider.otherwise('/');
}) 

এবং এখানে আমাদের ট্যাবগুলি এবং তাদের সামগ্রীর সাথে পিতামাতার দৃষ্টিভঙ্গি রয়েছে:

<ion-tabs class="tabs-icon-top">

  <ion-tab title="Index" icon="icon ion-home" ui-sref="index">
    <ion-nav-view name=""></ion-nav-view>
  </ion-tab>

  <ion-tab title="Register" icon="icon ion-person" ui-sref="register">
    <ion-nav-view name=""></ion-nav-view>
  </ion-tab>

</ion-tabs>

এটিকে কীভাবে চলমান করা যায় এবং পরবর্তীকালে সঠিকভাবে আয়নিক কাঠামো সঠিকভাবে ব্যবহার করা যায় তার উদাহরণের চেয়ে আরও নিন ... উদাহরণটি এখানে দেখুন

নামযুক্ত দর্শনগুলি (নিশ্চিত আরও ভাল সমাধানের জন্য) আয়নিক রাউটিংয়ের সমস্যাটি ব্যবহার করে একটি উদাহরণ সহ এখানে একই রকম প্রশ্নোত্তর রয়েছে , খালি পৃষ্ঠা দেখায়

একটি ট্যাবে নামে ছবিসহ উন্নত সংস্করণ এখানে: http://plnkr.co/edit/Mj0rUxjLOXhHIelt249K?p=preview

  <ion-tab title="Index" icon="icon ion-home" ui-sref="index">
    <ion-nav-view name="index"></ion-nav-view>
  </ion-tab>

  <ion-tab title="Register" icon="icon ion-person" ui-sref="register">
    <ion-nav-view name="register"></ion-nav-view>
  </ion-tab>

নাম দেখানো লক্ষ্যগুলি:

  $stateProvider.state('index', {
    url: '/',
    views: { "index" : { templateUrl: "tpl.index.html" } },
    parent: "app",
  });


  $stateProvider.state('register', {
    url: "/register",
    views: { "register" : { templateUrl: "tpl.register.html", } },
    parent: "app",
  });

আমার রুটগুলি দেখতে ঠিক আছে, আমি অন্যান্য আয়নিক উদাহরণগুলি পরীক্ষা করেছিলাম এবং আমার কোডটি দেখতে একই রকম। আমি সেই কনফিগার ফাংশনে কিছু ডিবাগার, কনসোল.লগ এবং সতর্কতা রেখেছি এবং সেগুলির কোনওটিই কার্যকর করা হয় নি। আমি কীভাবে নিশ্চিত করতে পারি যে আমার রুটগুলি বোঝা হয়েছে? আমি কি তাদের একরকম দেখতে পারি?
সেফা

4
কোন রাজ্যগুলি নিবন্ধিত হয়েছে তা যদি আমি জানতে আগ্রহী হয়, তবে আমি সাধারণত $ রাষ্ট্রীয় তথ্য .run () পদ্ধতি ইনজেক্ট করব। তারপরে আপনি কনসোল.লগ ($ state.get ()) করতে পারেন যা রাজ্যের একটি অ্যারে ফিরিয়ে দেবে। .run ($state) { console.log($states.get()); });
ডেডবাইকিটেন

37

আমার সাথে যা ঘটছে তা ভাগ করে নেওয়ার জন্য এখানে এসেছেন।
আপনার পিতামাতাকে নির্দিষ্ট করার দরকার নেই, রাজ্যগুলি কোনও দস্তাবেজ ভিত্তিক উপায়ে কাজ করতে হবে, পিতামাতাকে নির্দিষ্ট করার পরিবর্তে: অ্যাপ্লিকেশন, আপনি কেবল রাজ্যটিকে অ্যাপ্লিকেশন-ইনডেক্সে পরিবর্তন করতে পারবেন

.config(function($stateProvider, $urlRouterProvider){
    $urlRouterProvider.otherwise("/index.html");

$stateProvider.state('app', {
  abstract: true,
  templateUrl: "tpl.menu.html"
});

$stateProvider.state('app.index', {
    url: '/',
    templateUrl: "tpl.index.html"
});

$stateProvider.state('app.register', {
    url: "/register",
    templateUrl: "tpl.register.html"
});

সম্পাদনা সতর্কতা, আপনি যদি নীড়ের গভীরে যেতে চান তবে পুরো পথটি অবশ্যই আমাকে নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, আপনার মতো রাজ্য থাকতে পারে না

app.cruds.posts.create

একটি ছাড়া

app
app.cruds
app.cruds.posts

বা কৌণিক একটি ব্যতিক্রম ছুঁড়ে বলেছে যে এটি রুটটি বের করতে পারে না। এটি সমাধান করার জন্য আপনি বিমূর্ত অবস্থা নির্ধারণ করতে পারেন can

.state('app', {
     url: "/app",
     abstract: true
})
.state('app.cruds', {
     url: "/app/cruds",
     abstract: true
})
.state('app/cruds/posts', {
     url: "/app/cruds/posts",
     abstract: true
})

9
ধন্যবাদ EDIT Warning, if you want to go deep in the nesting, the full path must me specified. For example, you can't have a state like, এটি আমার সমস্যা ছিল।
সর্বাধিক

আমার উপরের মতো একই সমস্যা ছিল, তবে আমার রাজ্যের নামের পথে এমন কিছু অন্তর্ভুক্ত করতে চেয়েছিল যা রুটের পথে প্রতিফলিত হবে না, তাই আপনি urlমাঝের রাষ্ট্রের সম্পত্তি বাদ দিতে পারেন এবং তারপরে নীচের রুটটি urlযুক্ত করা হবে পূর্ববর্তী রুট url।
নিক এম এম

7

আয়নিকের সাথে আমার এই একই সমস্যা হয়েছে।

দেখা যাচ্ছে যে আমার কোডে কোনও ভুল ছিল না, আমি কেবল আয়নিক পরিবেশন সেশনটি ছেড়ে দিয়ে আবার আয়নিক পরিবেশন চালাতে হয়েছিল।

অ্যাপটিতে ফিরে যাওয়ার পরে, আমার রাজ্যগুলি ভাল কাজ করেছে।

আমি আবারও আপনার অ্যাপ.জেএসএস ফাইলটিতে সেভ টিপতে পরামর্শ দিচ্ছি যদি আপনি ঝালু চালাচ্ছেন তবে সবকিছু পুনরায় সংকলিত হয়ে গেছে তা নিশ্চিত করতে।


4
আমার ক্ষেত্রে সার্ভারটি পুনরায় চালু করা সমস্যার সমাধান করেনি তবে ডিবাগ করার জন্য আমাকে আরও ভাল ত্রুটি করতে সহায়তা করেছে। ধন্যবাদ!
Magus

3

অয়নিক রাউটিংয়ের ক্ষেত্রেও একই সমস্যা ছিল।

সরল সমাধান হ'ল রাজ্যের নাম ব্যবহার করা - মূলত state.go(state name)

.state('tab.search', {
    url: '/search',
    views: {
      'tab-search': {
        templateUrl: 'templates/search.html',
        controller: 'SearchCtrl'
      }
    }
  })

এবং নিয়ামক আপনি ব্যবহার করতে পারেন $state.go('tab.search');


2

আমার একটি কেস হয়েছিল যেখানে ত্রুটিটি একটি দ্বারা ছুঁড়েছিল

$state.go('');

যা সুস্পষ্ট। আমার ধারণা এটি ভবিষ্যতে কাউকে সহায়তা করতে পারে।


1

মাগাস দ্বারা জবাব দেওয়া:

পুরো পথটি অবশ্যই আমাকে নির্দিষ্ট করতে হবে

বিমূর্ত রাষ্ট্রগুলি সমস্ত শিশু রাষ্ট্রের ইউআরএলগুলিতে একটি উপসর্গ যুক্ত করতে ব্যবহার করা যেতে পারে। তবে মনে রাখবেন যে তার বাচ্চাদের পপুলেশন করার জন্য অ্যাবস্ট্রাক্টটির এখনও একটি ইউআই ভিউ দরকার । এটি করার জন্য আপনি কেবল এটিকে ইনলাইন যুক্ত করতে পারেন।

.state('app', {
   url: "/app",
   abstract: true,
   template: '<ui-view/>'
})

আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন: https://github.com

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.