2016-06-01 8 views
0

ショッピングバスケットとして機能するサービスを作成しようとしています。ユーザーがアイテムを追加/削除できるようにしています。しかし、私は次のエラーメッセージCannot read property 'addServiceItem' of undefinedに遭遇しています。ここに私のコードは、これまでのところです:ユーザーがアイテムを追加または削除できるサービスを作成する

controller.js

$scope.addServiceItem = function(bookingSelected, title, price, length) { 
    if (bookingSelected === true) { 
    BusinessService.manageServiceItems.addServiceItemcont(title, price, length); 
    } 
} 

services.js

function BusinessService($http) { 

    function manageServiceItems() { 

    var serviceItem = []; 

    function addServiceItem(title, price, length) { 
     serviceItem.push({ 
     title: title, 
     price: price, 
     length: length 
     }); 
    } 

    this.getServiceItem = function() { 
     return serviceItem; 
    } 

} 
+0

あなたはおそらくあなたは、コントローラからアクセスできるようになりたいプロパティに、サービスに、オブジェクトを返す必要があります。 –

答えて

3

サービス定義は、オブジェクトまたは関数を返すべきです。 docs

からサービスファクトリ関数は、アプリケーションの残りの部分へのサービスを表す単一のオブジェクトまたは関数 を生成します。オブジェクト またはサービスによって返された関数は、サービス上の依存関係 を指定する任意のコンポーネント (コントローラ、サービス、フィルタまたはディレクティブ)に注入されます。

function BusinessService($http) { 
    var BusinessService = this, serviceItem = []; 

    BusinessService.manageServiceItems = { 
     addServiceItem: function(title, price, length) { 
     serviceItem.push({ 
     title: title, 
     price: price, 
     length: length 
     }); 
    }, 
    getServiceItem: function() { 
     return serviceItem; 
    } 
    } 
    return BusinessService; 
}; 

var myModule = angular.module('myModule', []) 
.factory('BusinessService', BusinessService); 
関連する問題