AngularJS: 如何将数据从服务传送到控制器?
AngularJS: How do I communicate data from a service to a controller?
我是 AngularJS 的新手,对 JavaScript 不是很熟悉。我正在尝试使用 AngularJS v1.3.15.
制作一个简单的应用程序
我有这个控制器:
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
this.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
this.city_name = data.city_name;
});
}]);
而这个观点:
<div ng-controller="SimpleController as simple" >
<h1>Hello {{simple.city_name}}!</h1>
</div>
默认的城市名称行没有变化:City
。
据我所知,服务 market_data
似乎运行良好。我对 console.log
的调用打印出我希望服务返回的字符串。因此,data.city_name
包含正确的信息,但 this.city_name
不更新控制器。
将此数据导入控制器以显示在我的视图中的最佳方法是什么?
而不是使用 this
,您必须将城市的值保存在 $scope
中。像这样
app.controller('SimpleController', ['$scope', 'market_data', function($scope, market_data) {
$scope.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
$scope.city_name = data.city_name;
});
}]);
使用此代码:
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
$scope.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
$scope.city_name = data.city_name;
});
}]);
<div ng-controller="SimpleController" >
<h1>Hello {{simple.city_name}}!</h1>
</div>
为 this
使用局部变量。 vm
(viewmodel)常用。
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
var vm = this;
vm.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
vm.city_name = data.city_name;
});
}]);
我是 AngularJS 的新手,对 JavaScript 不是很熟悉。我正在尝试使用 AngularJS v1.3.15.
制作一个简单的应用程序我有这个控制器:
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
this.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
this.city_name = data.city_name;
});
}]);
而这个观点:
<div ng-controller="SimpleController as simple" >
<h1>Hello {{simple.city_name}}!</h1>
</div>
默认的城市名称行没有变化:City
。
据我所知,服务 market_data
似乎运行良好。我对 console.log
的调用打印出我希望服务返回的字符串。因此,data.city_name
包含正确的信息,但 this.city_name
不更新控制器。
将此数据导入控制器以显示在我的视图中的最佳方法是什么?
而不是使用 this
,您必须将城市的值保存在 $scope
中。像这样
app.controller('SimpleController', ['$scope', 'market_data', function($scope, market_data) {
$scope.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
$scope.city_name = data.city_name;
});
}]);
使用此代码:
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
$scope.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
$scope.city_name = data.city_name;
});
}]);
<div ng-controller="SimpleController" >
<h1>Hello {{simple.city_name}}!</h1>
</div>
为 this
使用局部变量。 vm
(viewmodel)常用。
var app = angular.module('game', [])
app.controller('SimpleController', ['market_data', function(market_data) {
var vm = this;
vm.city_name = "City";
market_data.success(function(data) {
console.log(data.city_name);
vm.city_name = data.city_name;
});
}]);