2016-06-10 62 views
-2

我需要服務提供者未在角JS工作

js code

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    var productList = []; 

    var addProduct = function(newObj) { 
    productList.push(newObj); 
    }; 

    var getProducts = function(){ 
    return productList; 
    }; 

    return { 
    addProduct: addProduct, 
    getProducts: getProducts 
    }; 
}); 




app.controller('parentController', function ($scope,productService) { 
    $scope.change = function() { 
    alert($scope.value); 
    } 
}); 

錯誤

error: [$injector:unpr] Unknown provider: productServiceProvider <- productService <- parentController 
  • 我需要從控制器傳遞數據到另一個。

  • ,而我不「噸明白爲什麼它產生這樣的錯誤。

+0

你在第一個'app.service'後面定義'app'。他們在不同的模塊/文件? –

+1

我猜測'app'在創建之前使用的是一個錯字......無論如何,'module.service'必須返回一個*構造函數*;如果你想返回服務的實例,請嘗試'module.factory'。 –

+0

你的代碼工作正常。確保你的項目中包含了你的服務文件,同時檢查'module'和'service'的減速順序。 –

回答

-1

你聲明模塊declearation之前的服務。所以它不會被添加到您的模塊

請按照下列步驟

var app = angular.module('myApp', []); 

然後創建控制器和服務

app.service('productService', function() { .... 

app.controller('parentController', function ($scope,productService) {... 

我不得不改變你的提琴例如檢查Link

我已經創造了另一個控制器共享相同的服務。

+0

jetndr它只是打字代碼問題我已經申報只有這樣的方式 – user2818060

+0

我認爲服務是不正確的選擇來處理通信 – user2818060

+0

是的,你可以使用父母控制器共享此數據或基於事件的解決方案。 –

1

該錯誤來自$injector無法解析所需的依賴關係。
要解決此問題,請確保依賴性已定義並拼寫正確。

我有兩個猜測是:

  • 你解決一個服務名稱拼寫錯誤,而複製代碼你的問題Fiddle
    只需查看您的實際服務名稱

  • 你重新聲明angular.moduleExample

例子:

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    return {}; 
}); 

app = angular.module('myApp', []); // <- module redeclared 
app.controller('parentController', function ($scope,productService) { 
    $scope.value = 'World' 
});  

angular.module('myApp', [])不知道前面聲明提供商創建模塊的新實例。
您可以通過angular.module('myApp')檢索它以備後用。

+0

我可以問一個關於downvote的評論嗎? –

+0

我不能在addproduct()函數中添加下拉值:undefined – user2818060

+0

https://jsfiddle.net/wwvgfcp3/5/ – user2818060