Javascript 将$scope替换为“';控制器';作为「;语法

Javascript 将$scope替换为“';控制器';作为「;语法,javascript,asp.net,angularjs,controller,angularjs-scope,Javascript,Asp.net,Angularjs,Controller,Angularjs Scope,我正在学习AngularJS+ASP.NET教程(),它们使用$scope,但我试图用新语法“controller”替换它。(检查后) 我所做的现在不起作用,因为页面在nextQuestion()函数中调用$http.get,但视图保持不变,只有标题“loading question…” 我的代码: JS Index.cshtml @{ ViewBag.Title=“播放”; } {{quick.answer()} 下一个问题 {{quick.title} {{option.title}}

我正在学习AngularJS+ASP.NET教程(),它们使用$scope,但我试图用新语法“controller”替换它。(检查后)

我所做的现在不起作用,因为页面在nextQuestion()函数中调用$http.get,但视图保持不变,只有标题“loading question…”

我的代码:

JS

Index.cshtml

@{
ViewBag.Title=“播放”;
}

{{quick.answer()}

下一个问题

{{quick.title}

{{option.title}} @节脚本{ @Scripts.Render(“~/Scripts/angular.js”) @Scripts.Render(“~/Scripts/app/quick controller.js”) }
您基本上找到了在控制器中使用
这个
不是一个好主意的原因。 $http成功承诺中的
this
不是控制器的
this
,因为此函数在不同的上下文中执行。如果通过闭包获得
$scope
,则这不会是一个问题


您可以通过定义一个变量
var=this来解决这个问题然后改用
这个

你基本上找到了为什么在控制器中使用
这个
不是一个好主意的原因。
$http成功承诺中的
this
不是控制器的
this
,因为此函数在不同的上下文中执行。如果通过闭包获得
$scope
,则这不会是一个问题


您可以通过定义一个变量
var=this来解决这个问题
然后使用
that

或者您可以使用javascripts绑定函数并传入您想要使用的正确的this

$http.get('/api/trivia').success(function (data, status, headers, config) {
    this.options = data.options;
    this.title = data.title;
    this.answered = false;
    this.working = false;
}.bind(this));

或者,您可以只使用javascripts绑定函数并传入您想要使用的正确代码

$http.get('/api/trivia').success(function (data, status, headers, config) {
    this.options = data.options;
    this.title = data.title;
    this.answered = false;
    this.working = false;
}.bind(this));

这对我有用,谢谢你/

//form.blade.php

<md-content flex ng-controller="EmployeeController as child" ng-cloak>
 <md-input-container>
    <label>State</label>
    <md-select name="fk_state" ng-model="form.fk_state">
        <md-option><em>Select</em></md-option>
        <md-option ng-repeat="state in child.states" ng-value="state.uf">
            [[state.uf]]
        </md-option>
    </md-select>
 </md-input-container>
</md-content>

这对我有用,谢谢你/

//form.blade.php

<md-content flex ng-controller="EmployeeController as child" ng-cloak>
 <md-input-container>
    <label>State</label>
    <md-select name="fk_state" ng-model="form.fk_state">
        <md-option><em>Select</em></md-option>
        <md-option ng-repeat="state in child.states" ng-value="state.uf">
            [[state.uf]]
        </md-option>
    </md-select>
 </md-input-container>
</md-content>

谢谢,我知道这是一个简单的问题,但有点困惑。在阅读了johnpapa的文章后,我认为新的语法会提供很多东西。谢谢,我发现这是一个简单的问题,但有点混乱。在阅读了johnpapa的文章之后,我认为新的语法会提供很多。好主意,但是如果你需要同时引用这两个,它就不起作用了。好主意,但是如果你需要同时引用这两个,它就不起作用了。
angular.module("app").controller('EmployeeController',
 function($scope, $q, utilsFactory){

    var that = this;

    //service that contains a $http request
    utilsFactory.getAll('states').then(function(response) {
        that.states = response.data;
        console.log(that.states); //should be available to child.states
    });
 }
)