将 $scope 替换为“'controller' as"句法 [英] Replace $scope with "'controller' as" syntax
问题描述
我正在关注这个 AngularJS+ASP.NET 教程(http://www.asp.net/web-api/tutorials/hands-on-labs/build-a-single-page-application-(spa)-with-aspnet-web-api-and-angularjs) 并且他们使用了 $scope,但我试图用新的语法控制器"替换它' 作为.(在检查 AngularJscontroller as"语法 - 澄清之后?)
我所做的现在不起作用,因为页面在 nextQuestion() 函数中调用了 $http.get,但视图保持不变,只有标题正在加载问题..."
我的代码:
JS http://pastebin.com/RfngRuZD
var app = angular.module('QuizApp', [])app.controller('QuizCtrl', ['$http', function ($http) {this.answered = false;this.title = "加载问题...";this.options = [];this.correctAnswer = false;this.working = false;this.answer = 函数 () {返回 this.correctAnswer ?'正确' : '不正确';};//得到this.nextQuestion = 函数 () {this.working = true;this.answered = false;this.title = "加载问题...";this.options = [];$http.get('/api/trivia').success(function (data, status, headers, config) {this.options = data.options;this.title = data.title;this.answered = false;this.working = false;}).error(function (data, status, headers, config) {this.title = "糟糕……出了点问题.";this.working = false;});};//邮政this.sendAnswer = 函数(选项){this.working = true;this.answered = true;$http.post('/api/trivia', { 'questionId': option.questionId, 'optionId': option.id }).success(function (data, status, headers, config) {this.correctAnswer = (data === "true");this.working = false;}).error(function (data, status, headers, config) {this.title = "糟糕……出了点问题.";this.working = false;});};}]);
Index.cshtml http://pastebin.com/YmV1hwcU>
@{ViewBag.Title = "播放";}<div id="bodyContainer" ng-app="QuizApp"><section id="内容"><div class="容器"><div class="row"><div class="flip-container text-center col-md-12" ng-controller="QuizCtrl as quiz" ng-init="quiz.nextQuestion()"><div class="back" ng-class="{flip: quiz.answered, 正确: quiz.correctAnswer, 不正确: !quiz.correctAnswer}"><p class="lead">{{quiz.answer()}}</p><p><button class="btn btn-info btn-lg next option" ng-click="quiz.nextQuestion()" ng-disabled="quiz.working">下一个问题</button></p>
<div class="front" ng-class="{flip: quiz.answered}"><p class="lead">{{quiz.title}}</p><div class="row text-center"><button class="btn btn-info btn-lg 选项"ng-repeat="quiz.options 中的选项" ng-click="quiz.sendAnswer(option)" ng-disabled="quiz.working">{{option.title}}按钮>