我设置了一个非常简单的角度应用,我收到了错误。 TypeError:undefined不是getSh的函数(App / allVM.js:23:32) 文件allVM.js
(function () {
'use strict';
var controllerId = 'sharticles';
angular.module('myApp')
.controller(controllerId,['datacontext','logger',sharticles]);
function sharticles($scope,datacontext, logger) {
//logger = logger.forSource(controllerId);
//var logError = logger.logError;
//var logSuccess = logger.logSuccess;
var vm = this;
vm.articles = [];
initialize();
/*Hiện thực*/
function initialize() {
getSh();
}
function getSh(forceRefresh) {
return datacontext.getSh(forceRefresh).then(function (data) { //Line 23
return vm.articles = data;
console.log(data);
});
}
$scope.datas = vm.articles;
$scope.gridDatas = {
data: 'datas'
};
}
})();
文件datacontext - 依赖注入器
/***
* Service: datacontext
*
* Xử lý tất cả các lưu trữ và tạo xóa các app entity
* dùng BreezeJS.
*
***/
(function () {
'use strict';
var serviceId = 'datacontext';
angular.module('myApp').factory(serviceId,['$q', 'logger', 'entityManagerFactoryOData', datacontext]);
function datacontext($q,logger,emFactory) {
logger = logger.forSource(serviceId);
var logError = logger.logError;
var logSuccess = logger.logSuccess;
var logWarning = logger.logWarning;
var manager = emFactory.newManager();
/*********Hiện thực chung*********/
//1.Nhận số record thay đổi
function getChangesCount() { return manager.getChanges().length; }
function hasChanges(){return manager.hasChanges();}
//4.Lưu thay đổi xuống server
function prepareSaveBatches() {
/*!@#$
*Web API Odata không tự tính toán được thứ tự lưu xuống database
*nghĩa là, nếu không cẩn thận trên client
*chúng ta có thể lưu mục con trước khi lưu một mục cha được tạo mới.
*Với Odata để client lưu các entity theo một thứ tự đúng thì phải :
*+ Ràng buộc constraint của database(chưa biết phải code sao)
*+ Lưu ngay mỗi khi thay đổi bất kỳ thứ gì (không ổn lắm)
*+ Phần chia ràng buộc các thay đổi thành 4 lô :
*1. Đã xóa mục con
*2. Đã xóa mục cha
*3. Đã thêm mục cha mới
*4. Mọi thay đổi khác
*/
var batches = [];
batches.push(manager.getEntities(['ShArticles'], [breeze.EntityState.Added]));
batches.push(null);// trống thì sẽ lưu tất cả thay đổi còn lại
return batches;
}
function save() {
var count = getChangesCount();
var promise = null;
var saveBatches = prepareSaveBatches();
saveBatches.forEach(function (batch) {
//Nhận các batch trống (ngoại trừ 'null' thì lưu tất cả mọi thứ khác)
if (bactch == null || batch.length > 0) {
promise = promise ? promise.then(function () { return manager.saveChanges(batch); }) :
manager.saveChanges(batch);
}
})
}
/********Hiện thực bảng ShMembers********/
//3.Nhận bảng ShMembers
function getSh(forceRefresh) {
var count;
if (forceRefresh) {
if (manager.hasChanges()) {
count = getChangesCount();
manager.rejectChanges();//trả về giá trị ban đầu trong cache cho các giá trị bị thay đổi nhưng không được lưu
logWarning('Có ' + count + ' bị thay đổi', null, true);
}
}
//Nếu không forceRefresh,cân nhắc nhận từ cache hơn là truy vấn giá trị mới từ xa
return breeze.EntityQuery.from('ShArticles')
.using(manager).execute()
.then(success).catch(failed);
function success(response) {
count = response.results.length;
logSuccess('Nhận ' + count + ' dòng', response, true);
return response.results;
}
function failed(error) {
var message = error.message || "Truy vấn bảng ShArticles";
logError(message, error, true);
}
}
/********Thiết lập chung********/
var service = {
//getChangesCount:getChangesCount,
//hasChanges:hasChanges,
//save:save,
getSh:getSh
};
return service;
}
})()
任何想法都会很棒。谢谢!
答案 0 :(得分:1)
您的依赖声明的编号和顺序不正确,我看到一些错别字。它应该像
.controller(controllerId,['$scope','datacontext','logger', sharticles]);
function sharticles($scope,datacontext, logger) {