Angularjs 控制器显示未定义?

Angularjs controller is showing undefined?

我正在使用 angularjs 和 cassandra 开发节点应用程序。 当我转到诸如注册页面之类的页面时,前端会正确出现,但它显示控制器未定义的错误。 错误:error:areq 错误的论点

这是app.js(主js配置文件)

angular.module('app', ['ui.router'])
.config(['$urlRouterProvider', '$stateProvider',
    function($urlRouterProvider, $stateProvider) {
        $urlRouterProvider.otherwise('/');
        $stateProvider
            .state('home', {
                url: '/',
                templateUrl: '/browser/views/home.html'
            })
            .state('register', {
                url: '/register',
                templateUrl: '/browser/views/register.html',
                controller: 'RegisterCtrl'
            })
            .state('login', {
                url: '/login',
                templateUrl: '/browser/views/login.html',
                controller: 'LoginCtrl'
            })
    }
]);

这是 register.html 文件,后跟控制器的路径。

<div ng-controller="RegisterCtrl" class="container-fluid">
<div class="row custom-row2">
    <div class="col-md-6 col-lg-6 col-sm-6">
        <h4 class="sign_up">{{ title }}</h4>
        <form class="form-horizontal" id="login_form" name="login_form" role="form">
            <div class="form-group">
                <label class="control-label col-sm-3" for="name">Name:</label>
                <div class="col-sm-9">
                    <input ng-model="name" type="text" class="form-control" name="field1" id="name" aria-describedby="inputSuccess3Status" placeholder="Enter Your Name....">
                </div>
            </div>
        </form>
    </div>
</div>

这是 registerCtrl.js 文件,即将在 firebug 中检查

 angular.module('app', ['ui.router'])
    .controller('RegisterCtrl', ['$scope',
        function($scope, RegiserService) {
            $scope.title = "Sign Up";
        }
    ]);

但是必须来自 registerCtrl 控制器的 title 不会出现,而 {{ title }} 会出现在那个地方。

我已经经历了好几次了,但是没能弄清楚定义控制器时出了什么问题。

您正在通过执行 angular.module('app', ['ui.router']).controller. 重新创建模块 只需使用 getter 语法 angular.module('app') 在创建应用程序后获取模块。我假设您在注册服务 RegiserService 时也在做同样的事情,该服务会清除注册到同一模块 app 的所有其他内容。使用语法 angular.module('moduleName', [..dep]) 创建模块后,您应该在注册任何其他后续实体时使用 getter 语法 angular.module('app') 获取模块。

模块创建(仅一次):

angular.module(moduleName, [requires], [configFn]);

模块Getter(访问已经创建的模块):

angular.module(moduleName);

documentation

When passed two or more arguments, a new module is created. If passed only one argument, an existing module (the name passed as the first argument to module) is retrieved.

例如:-

 angular.module('app').controller('RegisterCtrl',...
 angular.module('app').service('RegiserService',...

随着 PSL 提到的重新定义模块, 还有一点就是——什么是RegiserService?如果它是某种服务,那么控制器的定义是错误的。

正确的定义是

angular.module('app', ['ui.router'])
    .controller('RegisterCtrl', ['$scope', 'RegiserService',
        function($scope, RegiserService) {
            $scope.title = "Sign Up";
        }
    ]);