$ location.path不使用Angularjsbutton点击加载html文件
我有一个html my.html,其中包含一个button,在其上单击我要发送用户about.html,现在我面临的问题是在button单击我将进入控制器内,但是当我调用方法
$location.path("\about")
没有任何反应,只有我目前的网页出现,但我的about.html不加载。
我尝试使用$window.open('/about.html', '_self');
它工作得很好,但我不知道为什么$location.path
不适合我。
另外我正在使用<base href="http://localhost:8080/" />
。 是否造成任何问题?
my.html代码
<!DOCTYPE html> <html> <head> <base href="http://localhost:8080/" /> <title></title> </head> <body ng-app="myApp"> <script type="text/javascript" src="js/angular.js"></script> <script type="text/javascript" src="js/angular-route.js"></script> <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.4/angular- cookies.min.js"></script> --> <script src="js/controller.js"></script> <div class="container"> <div ng-controller="loginCtrl"> <form id="myLogin"> <div class="row" style="margin-top: 100px;text-align: center;"> <div class="col-sm-12" align="center"> <h2>Log In</h2> <table > <tr> <td>User Name:</td><td><input type="text" name="username" placeholder="Enter user name" id="username" ng-model="username"></td> </tr><tr><td></td></tr><tr><td></td></tr> <tr> <td> Password:</td><br><td> <input type="password" name="password" placeholder="Enter Password" id="password" ng-model="password"></td> </tr> <tr><td><button type="button" ng-click="submit()">Log In</button></td></tr> </table> </div> </div> </form> </div> </div> </body> </html>
controller.js
var app = angular.module('myApp', ['ngRoute']); app.config(function($locationProvider, $routeProvider) { console.log("hello"); $locationProvider.html5Mode(true); $routeProvider .when('/about',{ templateUrl: 'about.html' }) .otherwise({ templateUrl: 'about.html' }); }); app.controller('loginCtrl', function($scope, $location){ console.log("hello1") $scope.submit=function(){ var uname=$scope.username; var pwd=$scope.password; console.log("inside controller"); $location.path('/about'); }; });
请问任何人都可以告诉我如何在AngularJS中做到这一点。
about.js
<!DOCTYPE html> <html> <head> </head> <body> <p>yes</p> </body> </html>
app.js
var express = require('express'); var bodyParser = require('body-parser'); var http = require('http'); var https = require('https'); var fs = require('fs'); var app = express(); app.use(express.static(__dirname + '/public')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })) app.get('/', function(req, res) { console.log("Global"); res.sendFile(__dirname + '/public/my.html'); }); var util = require('util'); var port = process.env.PORT || 8080; http.createServer(app).listen(8080);
我的目录结构定义如下,我正在运行与app.js nodejs服务器
project/ my.html about.html app.js js/ controller.js angular.js angular-route.js
你需要添加ng-view
。
$ route服务通常与ngView指令和$ routeParams服务一起使用。
https://docs.angularjs.org/api/ngRoute/service/$route
所有的视图都会渲染到这个节点,所以你应该把login视图移动到一个不同的.html
文件(在我的例子中是home.html
)。
工作示例: https : //plnkr.co/edit/TvPU7f6YFEnFIom5JQRu?p=preview
浏览器URL更改时, $ location不会导致整个页面重新加载。 要在更改URL后重新加载页面,请使用较低级别的API $ window.location.href。
$window.location.href = '/views/Dummy.html';
没有任何反应,只有我目前的网页出现,但我的about.html不加载。
嗨! 我是新来的! 但也许我可以帮你:)
请小心, $location.path
不会重新加载您的页面,如果目标path与您当前的path相同。 我build议你使用$ route作为$route.reload()
来重新载入一个具有相同path的页面。