栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript控制器不是函数,未定义,但在全局定义控制器时

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript控制器不是函数,未定义,但在全局定义控制器时

使用Angular 1.3+,您将无法再在全局范围内使用全局控制器声明(无显式注册)。您将需要使用

module.controller
语法注册控制器。

例:

angular.module('app', [])    .controller('ContactController', ['$scope', function ContactController($scope) {        $scope.contacts = ["abcd@gmail.com", "abcd@yahoo.co.in"];        $scope.add = function() { $scope.contacts.push($scope.newcontact); $scope.newcontact = "";        };    }]);

要么

function ContactController($scope) {    $scope.contacts = ["abcd@gmail.com", "abcd@yahoo.co.in"];    $scope.add = function() {        $scope.contacts.push($scope.newcontact);        $scope.newcontact = "";    };}ContactController.$inject = ['$scope'];angular.module('app', []).controller('ContactController', ContactController);

这是一个重大更改,但可以通过使用来关闭以使用全局变量

allowGlobals

例:

angular.module('app')    .config(['$controllerProvider', function($controllerProvider) {        $controllerProvider.allowGlobals();    }]); .....expression = controllers.hasOwnProperty(constructor) ? controllers[constructor] : getter(locals.$scope, constructor, true) ||     (globals ? getter($window, constructor, true) : undefined);

一些其他检查:

  • 一定要确保将appname放在

    ng-app
    指令中,也要放在您的角根元素(例如:-)上
    html
    。例如:-ng-app =“ myApp”

  • 如果一切正常,但仍然遇到问题,请记住确保脚本中包含正确的文件。

  • 您没有在不同的位置定义两次相同的模块,这导致先前在同一模块上定义的任何实体都被清除,例如

    angular.module('app',[]).controller(..
    在另一个示例(又
    angular.module('app',[]).service(..
    包含两个脚本)中再次出现在示例中可能导致先前在该模块上注册的控制器。模块
    app
    的第二次重新创建将清除该模块。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号