Выявление шаблона модуля с угловым
Сегодняшний код снова сводит меня с ума, особенно Angular с шаблоном Revealing Module в сервисе Angular. Когда я начинал, я не видел в этом ничего плохого... теперь, кроме неработоспособности... я не знаю. В любом случае, я хочу знать, угловат ли я или делаю что-то глупое. вот код:
angular.module('homeAdmin.services', [])
.factory('dataService', function ($http, $q) {
'use strict';
function _contentTypes(){
var intialized = false;
var _models = [];
function _isReady() {
return intialized;
};
return {
isReady: _isReady
};
};
return {
contentTypes: _contentTypes
};
});
И вот как это называется:
var contentTypeCtrl = ['$scope','$http','$window','dataService', function ($scope, $http, $window, dataService) {
'use strict';
$scope.isBusy = false;
$scope.data = dataService;
$scope.contentType = {};
$scope.name = 'Content Type';
$scope.init = function () {
console.log('contentTypeCtrl initialized');
};
if (dataService.contentTypes.isReady() == false) {
console.log("Hello let's load some data!");
}}]
И вот как Firefox дает мне палец:
[16:01:56.864] "Error: dataService.contentTypes.isReady is not a function
contentTypeCtrl<@http://localhost:49499/App/plugins/home/admin/ngen/content-type-ctrl.js:12
invoke@http://localhost:49499/Scripts/angular/angular.js:2902
instantiate@http://localhost:49499/Scripts/angular/angular.js:2914
@http://localhost:49499/Scripts/angular/angular.js:4805
updateView@http://localhost:49499/Scripts/angular/angular-ui-router.js:1317
$ViewDirective/directive.compile/</eventHook@http://localhost:49499/Scripts/angular/angular-ui-router.js:1276
Scope.prototype.$broadcast@http://localhost:49499/Scripts/angular/angular.js:8307
$StateProvider/$get/transitionTo/$state.transition<@http://localhost:49499/Scripts/angular/angular-ui-router.js:1067
qFactory/defer/deferred.promise.then/wrappedCallback@http://localhost:49499/Scripts/angular/angular.js:6846
qFactory/ref/<.then/<@http://localhost:49499/Scripts/angular/angular.js:6883
Scope.prototype.$eval@http://localhost:49499/Scripts/angular/angular.js:8057
Scope.prototype.$digest@http://localhost:49499/Scripts/angular/angular.js:7922
Scope.prototype.$apply@http://localhost:49499/Scripts/angular/angular.js:8143
done@http://localhost:49499/Scripts/angular/angular.js:9170
completeRequest@http://localhost:49499/Scripts/angular/angular.js:9333
createHttpBackend/</xhr.onreadystatechange@http://localhost:49499/Scripts/angular/angular.js:9304"
Помогите? Кто-нибудь??
Вот пример того, как должна использоваться функция isready:
if (dataService.contentTypes.isReady() == false) {
$scope.isBusy = true;
dataService.contentTypes.get()
.then(function () {
}, function () {
alert('contentTypes retrieval failed');
})
.then(function () {
$scope.isBusy = false;
});
}
И потреблять данные так:
<tr data-ng-repeat="model in data.contentTypes.models">
2 ответа
Я не разбираюсь в Angular, так что извините, если я далеко отсюда (-!
Похоже, что isReady() возвращается путем вызова contentTypes() - но я не вижу вызова contentTypes - только ссылка, которая указывает на closure-fn _contentTypes.
Возможно ли, что это должно читаться как ниже?
dataService.contentTypes().isReady()
* добавлен '()' для фактического вызова функции contentTypes, которая, в свою очередь, вернет функцию isReady()
Вы не можете использовать Шаблон раскрытия модуля с фабриками, он будет возвращать значение свойств по умолчанию только при создании экземпляра. Вам нужно использовать сервисы, если вы хотите использовать шаблоны, раскрывающие шаблон.