কৌণিক জেএস ত্রুটি: 'আর্গুমেন্ট' ফার্স্ট সিআরটিএল 'কোনও ফাংশন নয়, অপরিবর্তিত হয়েছে'


94

আমি লক্ষ্য করেছি যে এখানে একই প্রশ্ন কয়েকবার জিজ্ঞাসা করা হয়েছিল, আমি এটি সমাধান করার চেষ্টা করেছি তবে কিছুই সাহায্য করে না।

আমি ডিমের ভিডিও সহ এই টিউটোরিয়ালটি অনুসরণ করছি।

তবে যখন আমি নিয়ন্ত্রকদের বিভাগ এবং কন্ট্রোলারদের মধ্যে ডেটা ভাগ করে নেওয়ার অংশ পাই তখন আমি এটি কাজ করতে পারি না।

আমি যখন এটি Chrome এর সাথে চালাচ্ছি, কনসোলে আমি এই ত্রুটিটি পেয়েছি:

'আর্গুমেন্ট' ফার্স্ট সিআরটিএল কোনও ফাংশন নয়, পেয়ে গেছে অপরিজ্ঞাত '।

আমি সত্যিই জানি না আসলে কী হয়েছে। টিউটোরিয়ালে কোডটি একই রকম।

এইচটিএমএল

<!DOCTYPE html>
<html ng-app>
 <head>
    <title>AngularJS Tutorials: Controllers</title>
    <link rel="stylesheet" href="mystyle.css">
    <script src="http://code.angularjs.org/1.2.0-rc.2/angular.min.js"></script>
 </head>
 <body>
    <div ng-app="">
       <div ng-controller="FirstCtrl">   
           <h1> {{data.message + " world"}}</h1>

           <div class="{{data.message}}">
               Wrap me in a foundation component
           </div>
       </div>
    </div>
    <script type="text/javascript" src="main.js"></script>
 </body>
</html> 

main.js

function FirstCtrl($scope){
   $scope.data = { message: "Hello" };
} 

দ্বিতীয় মন্তব্যে সমাধানটি এখানে দেওয়া হয়েছে - stackoverflow.com/questions/24894870/…
কাঞ্চন

উত্তর:


109

ng-appআপনার এইচটিএমএলে আপনার 2 জন নামবিহীন নির্দেশিকা রয়েছে।
আপনার ডিভ মধ্যে একটি হারান।

আপডেট
আসুন একটি ভিন্ন পদ্ধতির চেষ্টা করি।
আপনার জেএস ফাইলে একটি মডিউল নির্ধারণ করুন এবং ng-appএটির নির্দেশিকা নির্ধারণ করুন । এর পরে, কন্ট্রোলারটিকে এনজি উপাদান হিসাবে পছন্দ করুন, সাধারণ ফাংশন হিসাবে নয়:

<div ng-app="myAppName">  
<!-- or what's the root node of your angular app -->

এবং জেএস অংশ:

angular.module('myAppName', [])
    .controller('FirstCtrl', function($scope) {
         $scope.data = {message: 'Hello'};
    });

এখানে একটি অনলাইন ডেমো যা কেবল এটি করছে: http://jsfiddle.net/FssbL/1/


উত্তরের জন্য অনেক ধন্যবাদ, দুঃখের সাথে আমি এখনও একই ত্রুটি পেয়েছি .. সুতরাং আমি ডিভ থেকে এনজি-অ্যাপ = "" হারিয়েছি, তবে এটি এখনও কার্যকর হয় না doesn't
পুম্বা

4
আপনার সাহায্যের জন্য আপনাকে অনেক ধন্যবাদ! আমি এটি আর বুঝতে পারি না, আপনি এখানে এবং অনলাইন ডেমোতে যেমন দেখিয়েছিলেন ঠিক ঠিক তেমন কাজটিই করেছি তবে এটি এখনও বলে 'ফার্স্টসিআরটিএল' অপরিজ্ঞাত। আমি আবার শুরু থেকে এটি চেষ্টা করে যাচ্ছি, আশা করি এটি কাজ করে যাব, কারণ পরবর্তী টিউটোরিয়ালে আমি একই সমস্যা পেয়েছি।
পুম্বা

দুর্দান্ত !! এটা কাজ করে। আমি জেএস ফাইলের জন্য স্ক্রিপ্ট ট্যাগে প্রকারের বৈশিষ্ট্যটি বন্ধ করতে ভুলে গেছি। এবং এটি আপনার দ্বিতীয় সমাধানের সাথে মিলিয়ে এটি কাজ করে! আপনাকে অনেক ধন্যবাদ :))
পুম্বা

6
ডেমো ভিডিওটি মডিউলটির মধ্যে নিয়ামককে আবৃত করে না। তাহলে কেন এটি তার পক্ষে কাজ করে তবে আমার জন্য নয়? ডিম্বাণু.হোলেস
আনসনস /

4
@ ডেমোডেভ, আমারও একই প্রশ্ন আছে। আমি ধরে নিয়েছি ভিডিওগুলি অ্যাঙ্গুলারজেএস-এর পূর্ববর্তী সংস্করণ চলাকালীন রেকর্ড করা হয়েছিল, এবং তাই কন্ট্রোলারদের সংজ্ঞা দেওয়া সম্ভাব্যভাবে কম কঠোর ছিল (তবে এটি কেবল আমার অনুমান, আমি নিশ্চিত বা অস্বীকার করার জন্য কারও জন্য খুশি হব)
ম্যান্ডম

93

আমি ঠিক একই ত্রুটি বার্তা পেয়েছি এবং আমার ক্ষেত্রে এটি প্রমাণিত হয়েছে যে আমি আমার সূচক html এ নিয়ন্ত্রক জেএস ফাইল (যেমন প্রথম-সিটিআরএল.জেএস) তালিকাভুক্ত করি নি


4
আপনি কন্ট্রোলার জেএস ফাইলটি তালিকাভুক্ত করেননি এর অর্থ কী? আপনি কি বলছেন যে আপনি এটি অন্তর্ভুক্ত করেননি?
ডিমোডাভ

@ ডেভিডস্টোন হ্যাঁ - এটি আমার ক্ষেত্রে ছিল, তখনও।
মারিউজ

আর একটি নুব ত্রুটি: নিয়ামকটিতে রাউজ বন্ধনী ইত্যাদি কনসোলে একই ধরণের ত্রুটি প্রদর্শিত হতে পারে।
ব্যবহারকারী 2938649

9

আমি এই টিউটোরিয়ালটি সবেমাত্র করেছি এবং @ gion_13 উত্তর অনুসরণ করেছি। তবুও কাজ হয়নি। আমার জেএস ফাইলের অনুরূপ সূচকে আমার এনজি-অ্যাপ্লিকেশন নামটি তৈরি করে এটি সমাধান করুন। ঠিক অভিন্ন, এমনকি উদ্ধৃতি। সুতরাং:

<div ng-app="myapp">
    <div ng-controller="FirstCtrl">

এবং জেএস:

 angular.module("myapp", [])
.controller('FirstCtrl',function($scope) {
    $scope.data= {message:"hello"};
  });

অদ্ভুতভাবে কীভাবে এনজি-অ্যাপটি অভিন্ন হতে পারে তবে এনজি-কন্ট্রোলার তা করে না।


চার ঘন্টা আমার এই খরচ করতে হয়েছিল; (, অবশেষে আমাকে এটি
নির্ণয়

7

আপনার অ্যাপ্লিকেশনটির নাম স্থানng-app দেওয়ার জন্য আপনাকে অবশ্যই নামকরণ করতে হবে ; কেবল ব্যবহার ng-app করা যথেষ্ট নয়

পরিবর্তে:

<html ng-app>
...

পরিবর্তে এর মতো আপনার প্রয়োজন হবে:

<html ng-app="app">
...

তারপরে, এর মতো:

var app = angular.module("app", []).controller("ActionsController", function($scope){});

5

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

// controllers.js - dependencies in one place, perfectly fine
angular.module('my.controllers', [/* dependencies */]);

তারপরে আমার সংজ্ঞাগুলিতে, আমাকে এটির মতো রেফারেন্স দেওয়ার কথা ছিল:

// SomeCtrl.js - grab the module, add the controller
angular.module('my.controllers')
 .controller('SomeCtrl', function() { /* ... */ });

আমি কি করেনি পরিবর্তে, ছিল:

// Do not try this at home!

// SomeCtrl.js
angular.module('my.controllers', []) // <-- redefined module, no harm done yet
  .controller('SomeCtrl', function() { /* ... */ });

// SomeOtherCtrl.js
angular.module('my.controllers', []) // <-- redefined module - SomeCtrl no longer accessible
  .controller('SomeOtherCtrl', function() { /* ... */ });

কলটিতে অতিরিক্ত বন্ধনী নোট করুন angular.module


3

থেকে এনজি-অ্যাপ = "" সরান

<div ng-app="">

এবং কেবল এটি তৈরি করুন

<div>

4
আপনি যদি আপনার অ্যাপ্লিকেশনটির কনফিগারেশনে রাউটিং ব্যবহার করেন তবে সুর করুন আপনি এইচটিএমএলে এনজি-কন্ট্রোলার ব্যবহার করবেন না। পরিবর্তে আপনার এনজি-ভিউ থাকা উচিত। নিয়ন্ত্রক সাধারণত রাউটিংয়ের মতামতের সাথে সংজ্ঞায়িত হবে।
মার্ক

1

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


4
এটি একটি মন্তব্য হওয়া উচিত, উত্তর নয়।
অ্যান্টনি পেরট

1

আমি এই সমস্যার মুখোমুখি হয়েছি এবং এটি নিম্নলিখিত উপায়ে সমাধান করা হয়েছে:

  1. প্রথমে এনজি-অ্যাপটি সরান:

    <html ng-app>
    
  2. মাই অ্যাপে এনজি-অ্যাপের নাম যুক্ত করুন:

    <div ng-app="myApp">
    
  3. ফাংশনের আগে কোডটির এই লাইনটি যুক্ত করুন:

    angular.module('myApp', []).controller('FirstCtrl',FirstCtrl);
    

স্ক্রিপ্টের চূড়ান্ত চেহারা:

angular.module('myApp', []).controller('FirstCtrl',FirstCtrl);

function FirstCtrl($scope){
    $scope.data = {message: "Hello"};
} 

1

আমার ক্ষেত্রে, এই বার্তাটি মূল মডিউলটিতে ভুলে যাওয়া নির্ভরতা ইনজেকশন থেকে আসে


1

এটি যদি আপনার কৌণিক অ্যাপ কোডটি একাধিকবার যুক্ত করতে ভুলভাবে কনফিগার করা থাকে তবে এটি ঘটতে পারে। আমার ক্ষেত্রে এটি সূচক.জেএস এ ছিল এবং এটি আমার কন্ট্রোলার ঘোষণার আগে এবং পরে জেএস ফাইলের (গল্পে গ্লোবড) ডিরেক্টরিতে এটি যুক্ত করছিল। আমি একবার index.js এর জন্য অপসারণ যুক্ত করেছিলাম যাতে দ্বিতীয় বার সংশোধন করা এবং ইনজেকশন দেওয়া না হয়, আমার অ্যাপ্লিকেশনটি কাজ শুরু করে। উপরের সমাধানগুলির কোনওর যদি আপনার সমস্যার সমাধান না করে তবে অন্য টিপস।


1

প্রথমত - যদি মডিউলটির নামটি সংজ্ঞায়িত না করা হয়, জেএসে আপনি মডিউলটি অ্যাক্সেস করতে পারবেন না এবং এটির সাথে নিয়ামককে লিঙ্ক করতে পারবেন না।

আপনাকে কৌণিক মডিউলটিতে মডিউলটির নাম সরবরাহ করতে হবে। মডিউলটিও সংজ্ঞায়িত করতে পার্থক্য রয়েছে ১।

1 - দ্বিতীয়টি যুক্তিতে কোনও নির্ভরতা যুক্ত না করেই নতুন মডিউলটিকে "ফার্স্টমডিউল" ঘোষণা করতে হবে। 2 - এটি "ফার্স্টমডিউল" ব্যবহার করা যা অন্য কোথাও আরম্ভ করা হয়েছে এবং আপনি প্রাথমিক মডিউলটি পেতে এবং এটিতে পরিবর্তন আনতে চেষ্টা করছেন।


0

আমি এই সমস্যার মুখোমুখি হয়েছি কিন্তু নিয়ামকটির নাম পরিবর্তন করে আমি এই সমস্যাটি সংশোধন করতে পেরেছি, দয়া করে এটি চেষ্টা করে দেখুন।

ctrlSub.execSummaryDocuments = function(){};

0

কখনও কখনও ফাংশনের ভিতরে কোডের সিনট্যাক্সে কিছু ভুল হয় যা এই ত্রুটিটি ছুঁড়ে দেয়। আপনার ফাংশনটি সঠিকভাবে পরীক্ষা করুন। আমার ক্ষেত্রে এটি হয়েছিল যখন আমি জেসন ক্ষেত্রগুলিকে মান সহ নির্ধারিত করার চেষ্টা করছিলাম এবং কোলন ব্যবহার করছিলাম: সমান চিহ্নের পরিবর্তে অ্যাসাইনমেন্টটি তৈরি করা = = ...


0

আমার দুটি পৃথক দুটি জাভাস্ক্রিপ্ট ফাইলগুলিতে একই নামের সংজ্ঞাযুক্ত দুটি নিয়ামক ছিল। জ্বালাময় করে যে কৌণিক একটি স্পষ্টর ত্রুটি বার্তা দিতে পারে না যা একটি নেমস্পেস বিরোধের ইঙ্গিত দেয়।


0

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

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

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


0

আপনার চিঠি আবরণ খুব দেখুন। আমি এই বাগটি তাড়া করার জন্য একটি ভাল সময় ব্যয় করেছি।

<section id="forgotpwd" ng-controller="ForgotPwdController">

আমি যখন নিয়ামকের নাম রাখি

angular
    .module('app')
    .controller('ForgotpwdController', ForgotpwdController);

এগুলি সমস্তরই ধারাবাহিকভাবে নামকরণ করা উচিত, এক্ষেত্রে ভুলে যাওয়া পি ডাব্লু ডব্লিউডকন্ট্রোলারের সাথে লোয়ার কেস পি।

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