使用vm而不是$ scope - Angular $ http

时间:2017-02-24 16:10:10

标签: javascript angularjs

我无法转换某些Angular代码。目前,它正在使用Angular的$ http服务从另一个文件中获取数据并将其显示在页面上。我希望它仍然可以使用vm代替$scope。这是我徒劳地尝试这样做的一个例子:

HTML

<h1>{{vm.welcome}}</h1>

的Javascript

var app = angular.module('myApp', []);
app.controller('myCtrl', function() {
   $http.get("welcome.htm")
   .then(function(response) {
      var vm = this;
      vm.welcome = response.data;
   });
});

另外,我最初从w3schools&#39; Angular tutorial

1 个答案:

答案 0 :(得分:3)

在承诺之外和控制器内部添加var vm = this;

var app = angular.module('myApp', []);
app.controller('myCtrl', function($http) {
    var vm = this;
    $http.get("welcome.htm")
        .then(function(response) {
            vm.welcome = response.data;
        });
});

在html中使用控制器作为控制器的参考

<div ng-controller="myCtrl as vm"> 
   <h1>{{vm.welcome}}</h1>
</div>

请参阅this以获取有关this如何在控制器中工作的更多详细信息