AngularJS ng-controller无法正常工作

时间:2014-10-28 07:26:19

标签: javascript html angularjs angularjs-controller

我刚开始从w3schools学习AngularJS。我正在尝试练习他们在教程中提到过的示例。一切都运行正常,但当我来到" AngularJS控制器"它在w3schools Try it Yourself »中工作得不好。我将代码分成了fiddle example。 我的脚本看起来像这样:

function personController($scope) {
    $scope.firstName= "John";
    $scope.lastName= "Doe";
}

尽量帮助我并向我推荐一个好的教程(或任何免费的pdf文件)。

8 个答案:

答案 0 :(得分:22)

这是 corrected fiddle

对于角度来说,控制器定义必须如下所示是一个很好的做法:

angular.module("app", []).controller("personController", function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});

毫无疑问,学习Angular 基础知识的最佳教程是 CodeSchool 一个!

希望这有帮助。

答案 1 :(得分:11)

这是一种新方法。我们不能再使用没有模块的控制器。看看this。只需添加一个模块并附加控制器即可,您将没有任何问题。

答案 2 :(得分:5)

我刚修改了你的小提琴。请查看fiddle example

function personController($scope) {
    $scope.firstName= "John";
    $scope.lastName= "Doe";
}
  

您的代码没有问题,除了从 onLoad 没有换行

的JS小提琴设置

enter image description here

答案 3 :(得分:1)

您需要创建一个应用程序模块,然后为其添加一个控制器。在角度中,它是关于依赖性的。其次,你需要一个应用程序名称。 基础教程位于其主页上:https://docs.angularjs.org/tutorial/step_00 我开始使用它,它对我很好。只需从步骤1开始执行所有步骤。

答案 4 :(得分:1)

这是" Angular Controller Not Working"的常见搜索结果。所以我认为有助于添加修复我的"控制器无法工作的解决方案"问题

我的基本路由$routeProvider指向控制器文件,而templateUrl指向部分,如下所示:

$routeProvider.when('/', {
    templateUrl: 'partials/home.html',
    controller: 'homePage'
});

我有其他几条路线,所有这些控制器都有效,但出于某种原因,我的第一条路线不会。事实证明,我的部分逻辑错误很小,导致我的控制器代码无法运行。

愚蠢的小错误,但是我措手不及,这部分是一个逻辑问题阻止了任何控制器代码的运行。我花了很长时间才愿意承认,因为问题不在我的#14; JavaScript"即使控制台错误存在。紧密耦合的前端代码的乐趣,amiright?

答案 5 :(得分:1)

您必须在模块

中输入函数作为参数
var app = angular.module('app',[]);
app.controller('personController',function($scope){
  $scope.firstName = 'John';
  $scope.lastName = 'Smith';
});

答案 6 :(得分:1)

在html的任何标记中添加np-app="myApp",例如 <html ng-app = "myApp"> ,我的代码运行良好。

答案 7 :(得分:0)

如果您尝试将ngApp嵌套到其他ngApp中,可能会出现相同的问题。

文档说:

AngularJS applications cannot be nested within each other.