2015-11-07 2 views
1

Я пытаюсь отобразить некоторую переменную моего контроллера, но выход равен {{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'; 
    }]); 
})(); 
+0

Я не вижу 'ng-app'. Где вы определяете приложение? – Dvir

+0

Да, это в теге html: '' –

+0

Извините. пропустил это. Вы видите ошибки на консоли? – Dvir

ответ

2

Изменить эту строку:

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

To:

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

Edit: Если вы используете controllerAs, то я думаю, вы должны переписать код:

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

Когда я делаю это, я не получаю никакого вывода. –

+0

О, я только заметил, что если я его поменю, это сработает: '

{{user}}
' Может кто-нибудь объяснить мне почему? –

+0

@MichaelPittino - Я обновил свой ответ, пожалуйста, проверьте, помогает ли он –

1

Когда вы используете ControllerAs в вашем HTML, значения, которые попадают в экземпляр контроллера, фактически находятся на вашем объекте this.

Это означает, что ваш код, который прикрепляет user к объекту scope, неверен; вместо этого вы должны сделать следующее:

app.controller("UserController", function() { 
    this.user = "Michael"; 
}); 
Смежные вопросы