【问题标题】:AngularJS / Browserify/ Gulp: external controller not runningAngularJS / Browserify / Gulp:外部控制器未运行
【发布时间】:2014-06-25 13:02:15
【问题描述】:

我在app.js 文件中设置了以下内容:

require('angular');
require('angular-ui-router');

var storelistingCtrl = require('./controllers/storeListingsCtrl');

var ngApp = angular.module('ngApp', ['ui.router'], function($interpolateProvider){
        //-- as the output conflicts with blade lets alter the defaults
        $interpolateProvider.startSymbol('[['); 
        $interpolateProvider.endSymbol(']]');
    })
    .config(['$stateProvider','$logProvider','$urlRouterProvider', function ($stateProvider, $logProvider,$urlRouterProvider) {

        $logProvider.debugEnabled(true);    
    }])

//-- controllers
ngApp.controllers('storelistingCtrl', ['$scope', storelistingCtrl]);

在我的storelistingCtrl.js 文件中,我只有一个简单的输出来测试:

module.exports = function($scope) {
    console.log('loaded');
};

但我收到以下错误:

    Uncaught TypeError: undefined is not a function.
    Error: [ng:areq] http://errors.angularjs.org/1.2.18/ng/areq?p0=storelistingCtrl&p1=not%20a%20function%2C%20got%20undefined
    .....

我错过了什么吗?

更新

查看我的答案,一旦我在此处发布,请务必对其进行排序。

【问题讨论】:

  • 您的控制器的 require 似乎没有找到任何东西。你能仔细检查./controllers/storeListingsCtrl 是控制器的正确相对路径吗?我注意到模块名称中Listing 的大小写不同,而在变量名称中您使用小写...仅此一项并不意味着什么,但您可能有错字。
  • 这就是我起初的想法,但如果我在要求阶段初始化 require('./controllers/storeListingsCtrl')() 然后我将“加载”输出到控制台,所以它似乎运行了吗??
  • 不是真的...因为那样你是在自己调用函数,而不是有角度的。
  • @gtramontina 谢谢你让我仔细看,虽然我发现了错误

标签: angularjs gulp browserify


【解决方案1】:

Angular 控制器应该是拼写错误:

   ngApp.controller('storelistingCtrl...

而不是controllers..

此外,控制器名称区分大小写,因此它需要一个大写的“L”用于列表...

     ngApp.controller('storelistingsCtrl...

变成

     ngApp.controller('storeListingCtrl...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多