Angular 范围不打印变量
Angular Scope Not Printing Variables
我有一个 angular 工厂和控制器:
angular.module('myApp', ['ui.router', 'ngResource'])
.factory('Widget', ['$http', function WidgetFactory($http) {
return {
all: function() {
return $http({method: "GET", url: "/widgets"});
}
};
}])
.controller('StoreCtrl', ['$scope', 'Widget', function($scope, Widget) {
$scope.widgets = Widget.all();
}]);
在我的前端我有
<div ng-controller="StoreCtrl">
<li ng-repeat="widget in widgets">
{{ widget.price }}
{{ widget.name }}
</li>
</div>
但是我的 {{ widget.price }}
等中没有任何内容
我错过了什么?
$http returns 一个承诺。当承诺解决时,您需要将响应数据分配给 $scope.widgets 。在控制器中,试试这个:
Widget.all().then(function (data) {
$scope.widgets = data;
});
首先确保你有一个数组对象在
$scope.widgets;
在您的控制器中。
你可以在你的控制器中打印这一行
console.log($scope.widgets);
查看数据是否可用。
您没有完全按照框架的预期兑现您的承诺。查看 $q docs for some explanation on promises. We also need to set our view model value (scope) to the correct returned value from the response object,由以下组成...
- data – {string|Object} – The response body transformed with the
- transform functions. status – {number} – HTTP status code of the
- response. headers – {function([headerName])} – Header getter function.
- config – {Object} – The configuration object that was used to generate
- the request. statusText – {string} – HTTP status text of the response.
遵守以下...
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
此外,根据一些观察,无需像使用 WidgetFactory
那样命名工厂函数,匿名函数即可。您还可以利用 $http shortcut method get
等...
.factory('Widget', ['$http', function($http) {
return {
all: function() {
return $http.get('/widgets');
}
};
}]);
我有一个 angular 工厂和控制器:
angular.module('myApp', ['ui.router', 'ngResource'])
.factory('Widget', ['$http', function WidgetFactory($http) {
return {
all: function() {
return $http({method: "GET", url: "/widgets"});
}
};
}])
.controller('StoreCtrl', ['$scope', 'Widget', function($scope, Widget) {
$scope.widgets = Widget.all();
}]);
在我的前端我有
<div ng-controller="StoreCtrl">
<li ng-repeat="widget in widgets">
{{ widget.price }}
{{ widget.name }}
</li>
</div>
但是我的 {{ widget.price }}
等中没有任何内容
我错过了什么?
$http returns 一个承诺。当承诺解决时,您需要将响应数据分配给 $scope.widgets 。在控制器中,试试这个:
Widget.all().then(function (data) {
$scope.widgets = data;
});
首先确保你有一个数组对象在
$scope.widgets;
在您的控制器中。 你可以在你的控制器中打印这一行
console.log($scope.widgets);
查看数据是否可用。
您没有完全按照框架的预期兑现您的承诺。查看 $q docs for some explanation on promises. We also need to set our view model value (scope) to the correct returned value from the response object,由以下组成...
- data – {string|Object} – The response body transformed with the
- transform functions. status – {number} – HTTP status code of the
- response. headers – {function([headerName])} – Header getter function.
- config – {Object} – The configuration object that was used to generate
- the request. statusText – {string} – HTTP status text of the response.
遵守以下...
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
此外,根据一些观察,无需像使用 WidgetFactory
那样命名工厂函数,匿名函数即可。您还可以利用 $http shortcut method get
等...
.factory('Widget', ['$http', function($http) {
return {
all: function() {
return $http.get('/widgets');
}
};
}]);