【发布时间】:2017-05-20 08:44:30
【问题描述】:
我对 Angular JS 非常陌生,并且遇到了一些小问题。我敢肯定这可能很容易回答,但我的研究到目前为止一直没有成功。
我使用 Visual Studio 作为我的 IDE,并按照教程 here 使用 AngularJS 启动项目。
本教程的初始输出效果很好。我现在要做的是添加对从 url 读取参数的支持。类似index.html?target=bob
我找到了this answer,它显示了使用 $location 从 url 中获取参数并在页面上显示结果的一般方法。
我在将此逻辑应用于当前结构时遇到问题。我认为这是迄今为止我错过的一些基本问题,如果这个问题过于简单,我深表歉意。
这是我当前的代码。
index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<title></title>
</head>
<body ng-controller="Main as vm">
<input type="text" ng-model="vm.food" placeholder="Enter food" />
<p>Sriracha sauce is great with {{vm.food}}!</p>
Target: {{vm.test}}<br />
<script src="Scripts/angular.min.js"></script>
<script src="app/app.module.js"></script>
<script src="app/main.js"></script>
</body>
</html>
app.module.js
(function () {
'use strict';
angular.module('app', [], function ($locationProvider) {
$locationProvider.html5Mode(true);
});
})();
main.js
(function () {
'use strict';
angular
.module('app')
.controller('Main', main($location));
function main($location) {
var vm = this;
vm.food = 'pizza';
vm.test = $location.search()['target']
}
})();
页面呈现如下:
我在控制台中收到以下错误,这些错误似乎很明显,但我不知道下一步应该做什么。
显然,问题主要在于不了解 $location。但为什么?做什么?!
谢谢!
已解决
Claise 和 squiroid 都在下面提供了很好的答案。 由于我目前正在使用 squiroid 的解决方案,因此我会接受该答案,但 Claise 的答案提供了有关此问题的更深入的信息以供将来参考。
我还想指出,上面列出的第二个错误已通过以下方式解决 在 index.html 的头部添加
<base href="/">谢谢大家!
【问题讨论】:
-
我不太确定那个控制器功能的实现。如果您正在应用任何自动缩小,您可能希望通过
[]传递$location服务。 -
查看官方指南示例他们是如何通过的
$scope:docs.angularjs.org/guide/controller -
您的错误是关于 Main 未定义。如果您想保留代码,我会尝试将 Main 函数声明移到调用它的代码行上方。
-
@Joshua 请检查我的答案:)
标签: javascript angularjs