Javascript 角度范围不打印变量
我有一个角度工厂和控制器:Javascript 角度范围不打印变量,javascript,angularjs,ajax,angularjs-service,angular-controller,Javascript,Angularjs,Ajax,Angularjs Service,Angular Controller,我有一个角度工厂和控制器: angular.module('myApp', ['ui.router', 'ngResource']) .factory('Widget', ['$http', function WidgetFactory($http) { return { all: function() { return $http({method: "GET", url: "/widgets"}); } }; }]) .c
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}}
{{widget.name}
但是在我的{{widget.price}}
等中没有填充任何内容。我错过了什么?$http返回一个承诺。当承诺解析时,您需要将响应数据分配给$scope.widgets。在控制器中,尝试以下操作:
Widget.all().then(function (data) {
$scope.widgets = data;
});
$http返回一个承诺。当承诺解析时,您需要将响应数据分配给$scope.widgets。在控制器中,尝试以下操作:
Widget.all().then(function (data) {
$scope.widgets = data;
});
首先确保在
$scope.widgets;
在控制器中。
您可以在控制器中打印此行
console.log($scope.widgets);
查看数据是否可用。首先确保在
$scope.widgets;
在控制器中。
您可以在控制器中打印此行
console.log($scope.widgets);
查看数据是否可用。您没有完全按照框架的预期解决您的承诺。请查看有关承诺的一些解释。我们还需要将视图模型值(范围)设置为从中返回的正确值,包括以下内容
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
- 数据{string | Object}–使用
- 变换函数。状态–{number}–的HTTP状态代码
- 答复。headers–{function([headerName])}–Header getter函数
- config–{Object}–用于生成
- 请求。statusText–{string}–响应的HTTP状态文本
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
此外,根据一些观察,没有必要像对待WidgetFactory
那样命名工厂函数,匿名函数就可以了。您还可以利用get
等
.factory('Widget', ['$http', function($http) {
return {
all: function() {
return $http.get('/widgets');
}
};
}]);
您没有像框架所期望的那样完全实现您的承诺。请查看有关承诺的一些解释。我们还需要将视图模型值(范围)设置为从中返回的正确值,包括以下内容
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
- 数据{string | Object}–使用
- 变换函数。状态–{number}–的HTTP状态代码
- 答复。headers–{function([headerName])}–Header getter函数
- config–{Object}–用于生成
- 请求。statusText–{string}–响应的HTTP状态文本
Widget.all().then(function (response) {
$scope.widgets = response.data;
});
此外,根据一些观察,没有必要像对待WidgetFactory
那样命名工厂函数,匿名函数就可以了。您还可以利用get
等
.factory('Widget', ['$http', function($http) {
return {
all: function() {
return $http.get('/widgets');
}
};
}]);
所以我得到了同样的结果。但是当我
ng repeat=“widget in widgets”
并执行{{widget.name}}
时,我无法访问widgets
内部的值。这似乎是最有帮助的答案,因为您需要解决一个获得结果的承诺。没有必要调用$apply
,因为我们完全处于讨论中的代码的上下文中@gh0st听起来您缺少了一些次要的东西,是否有一个css类影响了元素之一,或者有什么东西改变了它的可见性?同样,为了在上面的示例中更加详细,也许可以将您的var指定给data.data
。对于回调来说,这通常是一个不好的参数名,您通常会看到response.data
,因为返回的函数上通常有data
属性object@scniro$scope.widgets=data.data
成功了。非常感谢。终于有人知道他们在说什么了。如果您将您的评论作为答案发布,我将对其进行标记。@gh0st为了完整性,我发布了我的答案以及一些小建议,因此我得到了相同的结果。但是当我ng repeat=“widget in widgets”
并执行{{widget.name}}
时,我无法访问widgets
内部的值。这似乎是最有帮助的答案,因为您需要解决一个获得结果的承诺。没有必要调用$apply
,因为我们完全处于讨论中的代码的上下文中@gh0st听起来您缺少了一些次要的东西,是否有一个css类影响了元素之一,或者有什么东西改变了它的可见性?同样,为了在上面的示例中更加详细,也许可以将您的var指定给data.data
。对于回调来说,这通常是一个不好的参数名,您通常会看到response.data
,因为返回的函数上通常有data
属性object@scniro$scope.widgets=data.data
成功了。非常感谢。终于有人知道他们在说什么了。如果您将评论作为答案发布,我将对其进行标记。@gh0st为了完整性,我发布了我的答案以及一些次要建议打印$scope.widgets在控制器中检查它是否包含数据。如果数据可用,您可以使用此行控制台.log($scope.widgets)查看您的数据;或者在浏览器中使用调试模式。有可用数据。这是一个对象数组。但是对象属性不会出现在它们的{{widget.name}中
在ng repeat
中。这不是一个好的做法,但现在不要使用$scope,而是使用$rootScope,然后再试一次。@VishalSingh会完全破坏它。在控制器中打印$scope.widgets检查它是否包含数据。如果数据可用,您可以使用此行控制台.log($scope.widgets)查看数据;或者在浏览器中使用调试模式。有可用数据。这是一个对象数组。但是对象属性没有出现在ng repeat
的{{widget.name}}
中。这不是一个好的做法