javascript - 部分 html Controller Angular

标签 javascript html angularjs partial-views

我有我的主应用程序 Controller :

var betsApp = angular.module('betsApp', ['ngRoute']);

betsApp.config(function($routeProvider, $locationProvider)
{

    $routeProvider.when('/', {templateUrl: 'pages/loginView.html'})
        .when('/login', {templateUrl: 'pages/loginView.html'});
});

betsApp.controller('appCtrl', function($scope)
{

});

这是index.html:

<!DOCTYPE html>
<html>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-route/angular-route.min.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>

<script src="js/controllers/loginController.js"></script>
<script src="js/services/loginService.js"></script>
<script src="js/controllers/AppController.js"></script>
<head>
    <title>Bets Application</title>
</head>
<body ng-app="betsApp" ng-controller="appCtrl">
<div class="container">
    <div ng-view></div>
</div>
</body>
</html>

我有这个loginView.html,它是部分的:

<div ng-controller="loginController">
    <h1>Login</h1>
    <hr>
    <form>
        <div class="form-group">
            <input type="email" ng-model="credentials.email" value="{{credentials.email}}">
        </div>
        <div class="form-group">
            <input type="password" ng-model="credentials.password" value="{{credentials.password}}">
        </div>
        <div class="form-group">
            <input type="button" value="Login" ng-click="doLogin()" class="btn btn-primary">
        </div>
    </form>
</div>

这是loginController.js:

function loginController($scope, $http, Login)
{
    $scope.credentials =
    {
        email: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f482989d9bc6c4b49399959d98da979b99" rel="noreferrer noopener nofollow">[email protected]</a>',
        password: 'vlad1q'
    };

    $scope.doLogin = function()
    {
        alert();
        Login.doLogin($scope.credentials)
            .success(function(response)
            {
                if(response.response == 'success')
                {
                    alert(response.data);
                }
            })
            .error(function(error)
            {
                alert(error);
            });
    }
}

我的问题是:是否可以将loginView与loginController连接起来?我希望登录 Controller 位于单独的文件中?

注意:
目前,我在使用上述代码时遇到错误,错误如下: https://docs.angularjs.org/error/$injector/unpr?p0=LoginProvider

注2
我想封装尽可能多的登录 View !

最佳答案

您没有任何LoginProvider,因此这一行:

function loginController($scope, $http, Login)

抛出错误。您应该将其包含在您的应用程序中:

var betsApp = angular.module('betsApp', ['ngRoute', 'loginService']);

我猜它放在您的 loginService.js 文件中。

当然,您可以通过以下代码将您的网址与特定 View 连接起来:

$routeProvider.when('/', {templateUrl: 'pages/loginView.html', controller: 'loginController'})

更新

您也可以使用下一个代码来做到这一点:

<div ng-controller="loginController">
  <div ng-include src="'pages/loginView.html'"></div>
</div>

因此,在这种情况下不需要路由,因为导航通常出现在每个页面上。

关于javascript - 部分 html Controller Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067383/

相关文章:

android - 电话:带扩展名的链接适用于 iOS 但不适用于 Android

javascript - 无法获取对现有窗口的引用

javascript - AngularJS 在 Karma 测试中设置范围变量

javascript - 在下划线js中,我可以在输入where方法作为linq选择投影后使用pluck方法获取多列吗

javascript - Google Recaptcha 启用禁用的提交按钮

javascript - 在 <a> 标签上分割字符串

javascript - 使用 AngularJs 选择框值在 IE 中不起作用

javascript - PhantomJS 中的猴子修补 console.log

html - 堆叠 Bootstrap 列 div

javascript - 如何使用 AngularJS 创建 html 页面模板并将 Controller 动态绑定(bind)到它?