Angularjs: ত্রুটি: [এনজি: আরকিউ] আর্গুমেন্ট 'হোম কন্ট্রোলার' কোনও ফাংশন নয়, অপরিবর্তিত


109

সার্ভিস ফাইল তৈরি করতে এবং একটি নিয়ামককে পরিষেবা যুক্ত করার জন্য এটি Angularjs ব্যবহার করে আমার ডেমো।

আমার ডেমো নিয়ে আমার দুটি সমস্যা আছে:

  • একটি যখন আমি এই ত্রুটিটি পাওয়ার <script src="HomeController.js">আগে <script src="MyService.js">রাখি,

ত্রুটি: [এনজি: আরকিউ] তর্ক 'হোমকন্ট্রোলার' কোনও ফাংশন নয়, অপরিশোধিত হয়েছে

  • অন্যটি যখন আমি নিম্নলিখিত ত্রুটিটি পাওয়ার <script src="MyService.js">আগে <script src="HomeController.js">রাখি,

ত্রুটি: [ject ইনজেক্টর: আনআরপি] অজানা সরবরাহকারী: মাই সার্ভিসপ্রোভাইডার <- মাই সার্ভিস

আমার উত্স:

ফাইল Index.html:

<!DOCTYPE html>
<html >
    <head lang="en">…</head>
    <body ng-app="myApp">
        
        <div ng-controller="HomeController">
            <div ng-repeat="item in hello">{{item.id + item.name}}</div>
        </div>

        <script src="Scripts/angular.js"></script>
        <script src="Scripts/angular-route.js"></script>

        <!-- App libs -->
        <script src="app/app.js"></script>    
        <script src="app/services/MyService.js"></script>
        <script src="app/controllers/HomeController.js"></script>
    </body>
</html>

ফাইল HomeController.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.controller('HomeController',function($scope,MyService){    
        $scope.hello=[];
        $scope.hello = MyService.getHello();
    });
})(window.angular);

ফাইল MyService.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.service('MyService', function () {
        var hello =[  {id:1,name:'cuong'},
            {id:2,name:'nguyen'}];
        this.getHello = function(){
            return hello;
        };
    });

})(window.angular);

1
আপনি আপনার * .controller.js যোগ করেছেন কিনা তা নিশ্চিত করুন BundleConfig.cs ফাইলটিতে। এই আমার স্থির।
সৈয়দ মোহাম্মদ

উত্তর:


210

এটি একটি নতুন মডিউল / অ্যাপ তৈরি করে:

var myApp = angular.module('myApp',[]);

যদিও এটি ইতিমধ্যে তৈরি মডিউলটি অ্যাক্সেস করে ( দ্বিতীয় তর্কটি বাদ দেওয়ার বিষয়টি লক্ষ্য করুন ):

var myApp = angular.module('myApp');

যেহেতু আপনি উভয় স্ক্রিপ্টে প্রথম পদ্ধতির ব্যবহার করেন আপনি মূলত আপনি আগে তৈরি মডিউলটি ওভাররাইড করছেন।

দ্বিতীয় স্ক্রিপ্টটি লোড হচ্ছে, ব্যবহার করুন var myApp = angular.module('myApp');


এটি আমার ত্রুটিটিও স্থির করে দিয়েছে। আমি ভুল করে কৌনিক.মডিউল ('মাই অ্যাপ', ['ui.router']) 2 টি পৃথক ফাইল (অ্যাপ.জেএস এবং রুট.জেএস) এ রেখেছি। একবার আমি রুটগুলি থেকে সারণি সরিয়ে ফেললাম .js এটি ইউনিট পরীক্ষাগুলি স্থির করে।
অ্যালান বোঘ

64

আমি একবার এই ত্রুটি অভিজ্ঞতা। আমার সমস্যাটি হ'ল আমি FILE_NAME_WHERE_IS_MY_FUNCTION.js যোগ করছিলাম না

সুতরাং আমার ফাইলটি এইচটিএমএল কখনই আমার ফাংশনটি খুঁজে পায় নি

আমি একবার "file.js" যুক্ত করলে আমি সমস্যার সমাধান করেছি

<html ng-app='myApp'>
    <body ng-controller='TextController'>
    ....
    ....
    ....
    <script src="../file.js"></script>
    </body>
</html>

1
বড় সময় সাহায্য করেছে। ইওমন কৌণিক জেনারেটরের সূচক html এর নীচে স্ক্রিপ্ট ট্যাগগুলি টাক করে ... খুব সহজেই মিস করতে পারে। এর জন্য ধন্যবাদ!
JaeGeeTee

একই প্রোব চালানো। অন্যান্য কন্ট্রোলারদের সাথে আমার সূচী পৃষ্ঠায় সংশ্লিষ্ট কন্ট্রোলআর.জে.এস ফাইলটি যুক্ত করতে হয়েছিল
আহমেদনাওয়াজবুট

21

আপনার কন্ট্রোলারগুলি বডি জন্য ক্লোজিং ট্যাগের ঠিক আগে আপনার সূচক html এর নীচের দিকে স্ক্রিপ্ট ট্যাগগুলির মধ্যে সংজ্ঞায়িত করা হয়েছে তাও নিশ্চিত করুন।

 <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/Administration.js"></script>
    <script src="scripts/controllers/Leaderboard.js"></script>
    <script src="scripts/controllers/Login.js"></script>
    <script src="scripts/controllers/registration.js"></script>

যদি আপনার নির্দিষ্ট html, নির্দিষ্ট.js এবং app.js পৃষ্ঠাগুলিতে সমস্ত কিছুই "সঠিকভাবে" (একই) থাকে তবে এটি আপনার সমস্যার সমাধান করবে provided


10

ইনজেকশনগুলির তালিকা এবং ফাংশনের মধ্যে যখনই আমি "," মিস করি তখন আমার কাছে কয়েকবার ঘটেছিল

app.controller('commonCtrl', ['$scope', '$filter',function($scope,$filter) {

}]);

নিয়ামকের নাম এবং ইনজেকশনের তালিকার মধ্যে "," মিস করার পরে আমার কাছে একই জিনিস ঘটেছিলapp.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
বেনজি

5

আমি এই ত্রুটিটিও অভিজ্ঞতা পেয়েছিলাম কিন্তু আমার ক্ষেত্রে এটি নিয়ামক নামকরণের কনভেনশনের কারণে হয়েছিল। আমি ঘোষণা controller: "QuestionController"মধ্যে .stateকিন্তু নিয়ামক সংজ্ঞা আমি এটা পছন্দ ঘোষিত

yiiExamApp.controller('questionController' ...

তবে তা হওয়া উচিত

yiiExamApp.controller('QuestionController' ...

আশা করি যে এই ত্রুটিযুক্ত লোকদের এই বোকা ভুলের কারণে লোকেরা সাহায্য করতে পারে আমি এটি সনাক্ত করতে 4 ঘন্টা নষ্ট করেছি।


5

আমি একই ত্রুটি পেয়েছি। আমি জাভা স্ক্রিপ্টটিকে এভাবে সংজ্ঞায়িত করেছি

<script src="controllers/home.js" />

তারপরে আমি এতে বদলে গেলাম

<script src="controllers/home.js"></script>

এই পরে আমার সমস্যা সমাধান করা হয়।


4

আমিও এই একই ত্রুটির মুখোমুখি হয়েছিলাম এবং আমার পক্ষে ঠিক করা ছিল আমার শিশু মডিউলটিকে মূল মডিউল অ্যারেতে অন্তর্ভুক্ত করা।

var myApp = angular.module('myApp', ['ngRoute', 'childModuleName']);

4

যদি সমস্ত ELSE ব্যর্থ হয় এবং স্থানীয়ভাবে আপনার মতো MEAN স্ট্যাকের সাথে আমার মতো ঝাঁকুনি পড়ে ... কেবল থামুন এবং আবার পরিবেশন করুন! আমি আমার শ্রবণটি খুব মনোযোগ সহকারে আপনার সমস্ত পোস্ট থেকে সমস্ত পরীক্ষা করে নিচ্ছি যতক্ষণ না আমি সহজেই গুলপ পরিবেশনাকে পুনরায় চালিত করি।



2

আমি একই সমস্যা ছিল। ফিক্সটি নিশ্চিত করা হয়েছিল যে আপনার সিট্রোলারগুলি কেবল শরীরের জন্য ক্লোজিং ট্যাগের ঠিক আগে আপনার সূচক html এর নীচের দিকে স্ক্রিপ্ট ট্যাগগুলির মধ্যেই সংজ্ঞায়িত করা হয়নি তবে তারা আপনার ফোল্ডারটি কীভাবে কাঠামোগত হয় সে অনুসারে তাও যাচাই করছে।

<script src="scripts/app.js"></script>
<script src="scripts/controllers/main.js"></script>
<script src="scripts/controllers/Administration.js"></script>
<script src="scripts/controllers/Leaderboard.js"></script>
<script src="scripts/controllers/Login.js"></script>
<script src="scripts/controllers/registration.js"></script>

2

আমি আমার প্রকল্পেও এই সমস্যার মুখোমুখি হয়েছি। ট্যাগ সহ my-controller.jsআমার karma.conf.jsফাইলটি sertedোকানোর পরে এটি শেষ পর্যন্ত কাজ করেছিল <script>

আশা করি এটি সাহায্য করবে। এই সমস্যার কারণ হতে পারে এমন অনেকগুলি কারণ রয়েছে।


1

আমিও এই ত্রুটি পেয়েছি।

রাউটিং তথ্যগুলিতে আমাকে আমার নতুন নিয়ামক যুক্ত করতে হয়েছিল। \ Src \ JS \ app.js

angular.module('Lillan', [
  'ngRoute',
  'mobile-angular-ui',
  'Lillan.controllers.Main'
])

এটি দেখতে দেখতে আমার কন্ট্রোলার যুক্ত করেছি

angular.module('Lillan', [
  'ngRoute',
  'mobile-angular-ui',
  'Lillan.controllers.Main',
  'Lillan.controllers.Growth'
])

চিয়ার্স!


1

স্পষ্টতই যে পূর্ববর্তী পোস্টগুলি দরকারী, তবে উপরের কোনওটি আমার ক্ষেত্রে সহায়ক নয়। কারণটি ছিল স্ক্রিপ্টগুলি লোড করার ভুল ক্রম । উদাহরণস্বরূপ, আমার ক্ষেত্রে, কন্ট্রোলার editCtrl.js ui-bootstrap-tpls.js এর উপর (ব্যবহার) নির্ভর করে, তাই এটি প্রথমে লোড করা উচিত। এটি একটি ত্রুটি ঘটায়:

<script src="scripts/app/station/editCtrl.js"></script>
<script src="scripts/angular-ui/ui-bootstrap-tpls.js"></script>

এটি সঠিক, কাজ করে:

<script src="scripts/angular-ui/ui-bootstrap-tpls.js"></script>
<script src="scripts/app/station/editCtrl.js"></script>

সুতরাং, ত্রুটিটি ঠিক করার জন্য আপনাকে প্রথমে নির্ভরতা ছাড়াই সমস্ত স্ক্রিপ্টগুলি ঘোষণা করতে হবে এবং তারপরে স্ক্রিপ্টগুলি যা পূর্বে ঘোষিত উপর নির্ভর করে।


1

এটা চেষ্টা কর

    <title>My First Angular App</title>

</head>

<body>

     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

    <h3>Adding Simple Controller<h3>        

    <div ng-controller="SimpleController">
        Name:

        <br/>

        <input type = "text" data-ng-model = "name"/> {{name}}

        <br/>

        <ul>    
            <li data-ng-repeat = "cust in customers | filter:name | orderBy:'city'">
                {{cust.name}} - {{cust.city}}
            </li>
        </ul>

    </div>


    <script>

        var angularApp = angular.module('angularApp',[]);

        angularApp.controller('SimpleController', [ '$scope', SimpleController]);

        function SimpleController($scope)
        {

            $scope.customers = [
                                    {name:'Nikhil Mahirrao', city:'Pune'},
                                    {name:'Kapil Mahire', city:'Pune'},
                                    {name:'Narendra Mahirrao', city:'Phophare'},
                                    {name:'Mithun More', city:'Shahada'}

                                ]; 
        }

    </script>

</body>


1

আমার ক্ষেত্রে, আমি এইচটিএমএল ফাইলটিতে কৌণিক অ্যাপ্লিকেশনটির নামটি অনুপস্থিত। উদাহরণস্বরূপ, আমি আমার অ্যাপ্লিকেশন কোডের সূচনা হতে এই ফাইলটি অন্তর্ভুক্ত করেছি। আমি ধরে নিয়েছিলাম যে এটি চালানো হচ্ছে, তবে তা হয়নি।

app.module.js

(function () {
    'use strict';

    angular
        .module('app', [
        // Other dependencies here...
        ])
    ;

})();

যাইহোক, আমি যখন এইচটিএমএল-এ অ্যাপ্লিকেশনটি ঘোষণা করি তখন এটি আমার ছিল:

index.html

<html lang="en" ng-app>

তবে আমি যে নামটি ব্যবহার করেছি তার সাথে কৌনিক প্রয়োগটি উল্লেখ করতে, আমাকে ব্যবহার করতে হয়েছিল:

index.html (স্থির)

<html lang="en" ng-app="app">

1

আমি ত্রুটি পাচ্ছিলাম কারণ স্ক্রিপ্টের আগে আমি কন্ট্রোলার স্ক্রিপ্ট যুক্ত করেছিলাম যেখানে আমি অ্যাপটিতে সংশ্লিষ্ট মডিউলটি সংজ্ঞায়িত করেছি। প্রথমে স্ক্রিপ্ট যুক্ত করুন

<script src = "(path of module.js file)"></script>

তারপরে কেবল যুক্ত করুন

<script src = "(path of controller.js file)"></script>

মূল ফাইলটিতে


1

ত্রুটি: এনজি: areq খারাপ তর্ক আমাকে কয়েকবার পেয়েছে কারণ আমি খুব শীঘ্রই স্কোয়ার বন্ধনী বন্ধ করি। নীচের BAD উদাহরণে এটি '$ রাষ্ট্র' এর পরে ভুলভাবে বন্ধ হয়ে যায় যখন এটি চূড়ান্ত প্রথম বন্ধনের আগে করা উচিত।

খারাপ:

sampleApp.controller('sampleApp', ['$scope', '$state'], function($scope, $state){

});

ভাল:

sampleApp.controller('sampleApp', ['$scope', '$state', function($scope, $state){

}]);

0

হ্যাঁ. যেমনটি অনেকে ইতিমধ্যে চিহ্নিত করেছেন, আমি সূচিপত্রের সমস্ত কন্ট্রোলার ফাইলগুলিতে এসআরসি পাথ যুক্ত করেছি।

<script src="controllers/home.js"></script>
<script src="controllers/detail.js"></script>
<script src="controllers/login.js"></script>
<script src="controllers/navbar.js"></script>
<script src="controllers/signup.js"></script>

এটি ত্রুটিটি স্থির করে।


0

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

grunt.initConfig({
  uglify: {
    my_target: {
      files: {
        'dest/output.min.js': ['src/input1.js', 'src/missing_controller.js']
      }
    }
  }
});

আশা করি এইটি কাজ করবে.


0

আমার পরিস্থিতিতে এই ত্রুটিটি উপস্থিত হয়েছিল যখন আমি অ্যারে আর্গুমেন্টের মধ্যে ফাংশন ঘোষণা করি না।

ত্রুটিযুক্ত এক :

taskAppControllers.controller('MainMenuCtrl', []);

স্থির এক:

taskAppControllers.controller('MainMenuCtrl', [function(){

}]);

0

বানানের ভুলগুলিও পরীক্ষা করে দেখুন

var MyApp = angular.module('AppName',[]);
MyApp.controller('WRONG_SPELLING_MyCtrl', ['$scope', MyControllerCtrl])
function MyControllerCtrl($scope) {
   var vm = $scope;
   vm.Apple = 'Android';
}

<div ng-controller="ACTUAL_SPELLING_MyCtrl">
    {{Apple}}
</div>

0

আপনার এইচটিএমএল পৃষ্ঠায় অন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করুন:

  1. angular.min লিপি
  2. app.js
  3. নিয়ামক জাভাস্ক্রিপ্ট পৃষ্ঠা page

ফাইলগুলি অন্তর্ভুক্ত করার ক্রমটি গুরুত্বপূর্ণ। এটিই ছিল আমার সমস্যার সমাধান।

আশাকরি এটা সাহায্য করবে.


0
sampleApp.controller('sampleApp', ['$scope', '$state', function($scope, $state){

আমার জন্য একই জিনিস, কমা ',' এর আগে ফাংশনটি আমাকে সমস্যা সমাধানে সহায়তা করেছিল - ত্রুটি: এনজি: আরকিউ খারাপ তর্ক


0

আমার নিয়ামক ফাইলটি খালি হিসাবে ক্যাশে করা হয়েছে। ক্যাশে সাফ করা আমার জন্য এটি স্থির করে।


0

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

এর পরে আমার ওয়েবসাইট প্রতি সেকেন্ডে স্বয়ংক্রিয়ভাবে পৃষ্ঠা লোড করা শুরু করে, আমি ত্রুটিটি দেখতেও পারিনি। তাই আমি ব্রাউজারের ক্যাশে সাফ করে দিয়েছি। এটি সমস্যার সমাধান করেছে

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