2014-06-21 3 views
0

각도가있는 아주 간단한 응용 프로그램을 설정 중이며 오류가 발생합니다. 의존성 주입"잡히지 않은 TypeError : 정의되지 않은 함수입니다"AngularJS-BreezeJS

/*** 
* 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() { 
      /*[email protected]#$ 
      *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; 
    } 
})() 

어떤 아이디어가 좋은 것 -

(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' 
     }; 
    } 
})(); 

파일 데이터 컨텍스트가 파일 allVM.js

형식 오류 : (32 : 23 앱/allVM.js) 정의되지는 getSh에서 함수가 아닙니다 . 감사!

답변

1

귀하의 전화 번호와 종속성 선언 순서가 잘못되어 일부 오타가 표시됩니다. 그것은 같아야한다

.controller(controllerId,['$scope','datacontext','logger', sharticles]); 

    function sharticles($scope,datacontext, logger) { 
관련 문제