【问题标题】:angular doesn't render $scope角度不呈现 $scope
【发布时间】:2015-11-07 19:36:53
【问题描述】:

我尝试显示我的控制器的一些变量,但输出只是{{UserCtrl.user}} 而不是UserCtrl.user 的内容。

我得到了以下文件结构:

  • index.html
  • scripts/app.js

这是index.html的代码:

<!doctype html>
<html lang="en" ng-app="birdsnest">
<head>
    <meta charset="utf-8">

    <title>Birdsnest</title>

    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap-theme.css">
</head>
<body>
    <div ng-controller="UserController as UserCtrl">
        {{UserCtrl.user}}
    </div>

    <script src="bower_components/jquery/dist/jquery.js"></script>
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
    <script src="bower_components/angular/angular.js"></script>

    <script src="scripts/app.js"></script>
</body>
</html>

scripts/app.js:

(function() {
  var app = angular.module('birdsnest', []);

  app.controller('UserController', ['scope', function($scope) {
    $scope.user = 'Michael';
  }]);
})();

【问题讨论】:

  • 我看不到ng-app。您在哪里定义应用程序?
  • 是的,在html标签里:&lt;html lang="en" ng-app="birdsnest"&gt;
  • 对不起。错过了。您在控制台上看到任何错误吗?
  • 您需要将 JS 包含在所有内容之上,而不是下方。 (在&lt;head&gt; 部分)
  • 完成,但结果与问题中提到的相同。

标签: javascript angularjs


【解决方案1】:

改变这一行:

app.controller('UserController', ['scope', function($scope) {

收件人:

 app.controller('UserController', ['$scope', function($scope) {

编辑: 如果您使用的是controllerAs,那么我认为您应该重写您的代码:

app.controller('UserController', function() {
  this.user = 'Michael';
}); 

【讨论】:

  • 当我这样做时,我没有得到任何输出。
  • 哦,我刚刚注意到,如果我把它改成这个,它就可以工作了:&lt;div ng-controller="UserController"&gt; {{user}} &lt;/div&gt; 有人能解释一下为什么吗?
  • @MichaelPittino - 我已经更新了我的答案,请检查它是否有帮助
【解决方案2】:

当您在 HTML 中使用 ControllerAs 语法时,最终绑定到控制器实例的值实际上在您的 this 对象上。

这意味着您将user 附加到scope 对象的代码不正确;相反,您应该执行以下操作:

app.controller("UserController", function() {
  this.user = "Michael";
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多