代码之家  ›  专栏  ›  技术社区  ›  Asool

AngularJS控制器未加载

  •  0
  • Asool  · 技术社区  · 6 年前

    我有一个简单的 app.js 它应该加载一个控制器。但是控制器没有被加载。谢谢你的帮助。

    这是我的 应用程序js :

    /* globals APP, angular */
    angular.module('templates-outlook', []);
    
    angular.module(APP, [
         'templates-outlook',
         'ui.router'
    ])
    .config[(
         '$stateProvider',
         function ($stateProvider) {
              console.log("Loaded app.js");
    
              $stateProvider
              .state('outlook', {
                   url: '/extension',
                   templateUrl: 'templates/outlook/outlook_main.html',
                   controller: 'OutlookMainController'
              })
    
         }
    ])
    

    给你outlookmain.js. 其实很简单。

    /* global angular, APP */
    
    
    angular.module(APP).controller('OutlookMainController', [
         console.log('lion king'),
         function () {
              console.log('blah blah');
         }
    ]);
    

    狮子王 加载应用程序js

    为什么我没看到“废话”?

    <script src="/load.php?f=outlook/app.js"></script>
    <script src="/load.php?f=outlook/outlookmain.js"></script>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Shankar kota    6 年前

    下面是一个声明函数的示例。

     function nameOfFunction() {
          console.log('some text to print');
     } 
    

    对于您的要求,应该如下所示`

    angular.module(APP).controller('OutlookMainController', [
         console.log('lion king');
         // Function declaration here
         function testFunction() {
              console.log('blah blah');
         }
         // Call the function here
         testFunction();
    ]);
    

    `

        2
  •  1
  •   Pop-A-Stash    6 年前

    控制器定义不正确:

    angular.module(APP).controller('OutlookMainController', [
         console.log('lion king'),
         function () {
              console.log('blah blah');
         }
    ]);
    

    当您更改格式时,很容易看到您将一个数组作为第二个参数传递。

    angular.module(APP).controller('OutlookMainController', 
      [console.log('lion king'), function () { console.log('blah blah'); }]
    );
    
    angular.module(APP).controller('OutlookMainController', [console.log('lion king'), function() { console.log('blah blah'); }]
    );
    

    但是,数组应该包含注入的服务和提供者,数组的最后一个元素是控制器的函数。在这里,您正在插入一个 console.log 声明。这没道理。

    https://next.plnkr.co/edit/cHQjFsx3q0oHvkxC

    错误:[$注射器:itkn]注射令牌不正确!预期服务 名称为字符串,未定义

    我想你的意思是:

    angular.module(APP).controller('OutlookMainController', [function() {
         console.log('lion king'),
         function () {
              console.log('blah blah');
         }
    }]);
    

    但是,除非显式调用匿名函数、将其从函数中取出或将其定义为自执行函数,否则仍不会调用该匿名函数:

    angular.module(APP).controller('OutlookMainController', [function() {
         console.log('lion king');
    
         console.log("blah blah blah");
    
         (function () {
              console.log('blah blah');
         })();
    
         function logBlah() {
              console.log('blah blah');
         }
         logBlah();
    }]);
    

    AngularJS不会改变Javascript的基本原理。