AngularJS资源调用指令
我试图创建一个AngularJS指令,该指令使用模板中的属性值调用使用AngularJS资源调用指令,angularjs,Angularjs,我试图创建一个AngularJS指令,该指令使用模板中的属性值调用使用$resource创建的服务,并使结果在元素范围内可用 我有一个非常简单的服务: services.factory('Concept', ['$resource', function($resource) { return $resource('http://example/api/:id'); }]); 以及一项指令: directives.directive('anConcept', ['Concept', func
$resource
创建的服务,并使结果在元素范围内可用
我有一个非常简单的服务:
services.factory('Concept', ['$resource', function($resource) {
return $resource('http://example/api/:id');
}]);
以及一项指令:
directives.directive('anConcept', ['Concept', function(Concept) {
return {
scope: {
anConcept: '@'
},
restrict: 'A',
controller: function($scope, $element) {
$scope.results = Concept.get({id: concept});
}
}
}]);
然后,我尝试在我的视图中调用此选项:
<div an-concept="1">
{{results}}
</div>
{{results}}
查看浏览器调试器中的“网络”窗格,我可以看到发出的请求,但结果在元素的范围内不可用
我确信我犯了一个非常基本的错误,但我不知道它是什么。这是因为
get
的结果是一个承诺。您需要执行以下操作:
Concept.get({id: concept}).success(function(data) {
$scope.results = data;
};
编辑
对不起,我想我弄错了,$resource
的工作原理与$http
有点不同:
Concept.get({id: concept}, function(data) {
$scope.results = data;
};
这是因为
get
的结果是一个承诺。您需要执行以下操作:
Concept.get({id: concept}).success(function(data) {
$scope.results = data;
};
编辑
对不起,我想我弄错了,$resource
的工作原理与$http
有点不同:
Concept.get({id: concept}, function(data) {
$scope.results = data;
};
如果您想在指令外看到该值,我会说您不会将其视为简单的。因为您的指令是隔离的-SCOPE指令。这意味着您在该范围内的值将与父范围隔离,并且您不会在指令外看到该值(有一种方法可以获得该隔离范围).但如果您想在指令中看到它,我会说您的代码是正确的代码。如果响应被接受,您的结果将被定义。如果您想在指令中看到该值,我会说,您不会将其视为一个简单的。因为您的指令是隔离的-SCOPE指令。这意味着您在该范围内的值将与父范围隔离,并且您不会在指令外看到该值(有一种方法可以获得该隔离范围)。但是,如果您希望在指令中看到它,我会说您的代码是正确的代码。如果响应被接受,您的结果将被定义。请注意,当您使用
$resource
时,您收到的是一个承诺。此外,如果指令的作用域被隔离,则您的$scope
属性的结果可能会遇到一些问题
angular.module('myApp',['ngResource']))
.factory('Concept',['$resource',
职能(资源){
返回$resource('https://api.stackexchange.com/2.2/info');
}
])
.指令('anConcept',['Concept',
功能(概念){
返回{
限制:“A”,
链接:函数($scope、$element、$attrs、$controllers){
概念({
站点:$attrs.anConcept
},功能(结果){
$scope.results=results.items[0]。用户总数;
});
}
};
}
]);代码>
stackoverflow用户总数:{results}
请注意,当您使用$resource
时,您收到的是一个承诺。此外,如果指令的作用域被隔离,则您的$scope
属性的结果可能会遇到一些问题
angular.module('myApp',['ngResource']))
.factory('Concept',['$resource',
职能(资源){
返回$resource('https://api.stackexchange.com/2.2/info');
}
])
.指令('anConcept',['Concept',
功能(概念){
返回{
限制:“A”,
链接:函数($scope、$element、$attrs、$controllers){
概念({
站点:$attrs.anConcept
},功能(结果){
$scope.results=results.items[0]。用户总数;
});
}
};
}
]);代码>
stackoverflow用户总数:{results}
谢谢,这确实是一个孤立的范围问题。谢谢,这确实是一个孤立的范围问题。