在Angular.js中从指令控制器调用工厂
Calling factory from directives controller in Angular.js
我正在尝试学习Angular.js,我正在使用ng-boiler-plate来管理我的测试应用程序。
然而,我遇到了一个问题,看不出它不工作的原因。基本上,我试图注入一个工厂,然后从指令控制器调用它。
然而,当我试图调用它时,我得到一个错误报告工厂名称(在本例中为dashboardFac)未定义。
我将包括下面的指令和工厂:
指令:
angular.module( 'locationSelector', [
'ngBoilerplate.locationFactory'
] )
.directive( 'locationSelector', function() {
return {
restrict: 'A',
//template: '<h3>asdfasdfasd</h3>',
templateUrl : 'components/locationSelector/locationSelector.tpl.html',
link: function( scope, element, attrs ) {
console.log("link working ");
var $input = angular.element( document.querySelector( '#location' ) );
$input.bind('focus', function() {
console.log("stay focused son");
});
},
controller: function($scope, dashboardFac, $element){
$scope.locyTexy = "";
$scope.api = dashboardFac;
console.log($scope.api);
$scope.change = function() {
console.log("asdfasd");
dashboardFac.assets.getLocations().then(function(result){
});
};
}
};
})
;
工厂:
angular.module( 'ngBoilerplate.locationFactory', [
]).factory('dashboardFac', function($http, $q){
this.assets = {
getLocations: function(args) {
var deferred = $q.defer();
var parmUrl = "will be some url eventually";
$http.jsonp({
method: 'GET',
url: parmUrl
}).
success(function(data, status) {
deferred.resolve(data);
}).
error(function(data, status) {
deferred.reject(data);
});
return deferred.promise;
}
};
});
任何帮助都会非常感激,我有一种感觉,我错过了一些基本的东西,但希望有人能帮助我指出正确的方向。
提前感谢。
必须将dashboardFac
factory注入指令:
.directive( 'locationSelector', function(dashboardFac) {
[…]
})
您必须首先将factory
注入directive
,正如Krzysztof Safjanowski所指出的
.directive( 'locationSelector', function(dashboardFac) {
[…]
})
那么你的工厂将不得不返回一个Object,就像其他工厂一样:
angular.module( 'ngBoilerplate.locationFactory', [])
.factory('dashboardFac', function($http, $q){
return {
assets: {
getLocations: function (args) {
var deferred = $q.defer();
var parmUrl = "will be some url eventually";
$http.jsonp({
method: 'GET',
url: parmUrl
}).
success(function (data, status) {
deferred.resolve(data);
}).
error(function (data, status) {
deferred.reject(data);
});
return deferred.promise;
}
}
}
});
相关文章:
- 如何从指令的控制器调用依赖注入服务的嵌套方法
- 从指令角度调用控制器函数
- 从 AngularJS 中的父控制器调用指令的方法
- 从控制器调用特定指令实例的函数
- 如何从 Angular 上的控制器调用指令的函数
- ng-click 指令不调用控制器作用域中定义的函数
- 从控制器调用指令中函数的最佳方法是什么
- 当子指令具有独立作用域时,是否可以从父指令控制器调用函数
- 如何从控制器调用指令作用域上的函数
- 从另一个控制器中的指令内部定义的一个控制器调用方法:AngularJS
- 从链接函数内部带有参数的指令角度调用控制器方法
- 是'不良做法'用于Angular控制器调用指令上的函数
- 从指令中调用控制器函数不会更新作用域
- 在指令中调用$setViewValue并不会触发控制器中的$watch
- 在Angular js中,在指令中调用模块控制器的方法,默认情况下不会看到它的作用域
- 在Angular.js中从指令控制器调用工厂
- 从带有参数的指令中调用控制器函数
- 如何从包含控制器的指令中调用$scope方法
- 为什么指令不调用我的控制器方法
- 从指令中调用Angular控制器函数