2016-04-03 43 views
0

我想通过制作一个基本的短信应用程序来学习离子&角度。所以我开始使用由离子提供的选项卡模板,并且只是调整一些事情来弄清楚一切是如何工作的。创建服务时未知的提供商 - Angular

无论如何,我试图将对话ID从表格行传递给对话控制器,以便它可以用相关信息填充视图。

这里是我的控制器:

var baxter = angular.module('baxter'); 

baxter.controller('ConversationsCtrl', function($scope, 

conversationService) { 
    $scope.conversations = conversationService.conversations; 

    $scope.setCurrentConversation = function(convoID){ 
    conversationService.selectedConversation(convoID); 
    } 
}); 

服务:

var baxter = angular.module('baxter'); 

baxter.service('conversationService', function($http) { 
    this.conversations = [ 
    { title: 'Jill Sanders', id: 1 }, 
    { title: 'Bobby Duck', id: 2 }, 
    { title: 'Boatie McBoatface', id: 3 }, 
    { title: 'Jesus Christ', id: 4 }, 
    { title: 'Tall Blonde', id: 5 }, 
    { title: 'Mom', id: 6 } 
    ]; 

    this.selectedConversation = function(conversationID) { 
    console.log(conversationID); 
    } 

    return this; 
}); 

错误:

0  780569 error Error: [$injector:unpr] Unknown provider: conversationServiceProvider <- conversationService <- ConversationsCtrl 
+0

代码看起来是正确的..唯一可以说的是,请仔细检查'service.js'文件是否已被加载。通过开放开发者控制台.. –

+0

你是否熟悉离子?我不知道如何调试离子,因为它使用命令行和一个IOS模拟器 – broderickga

+0

可以在浏览器中运行离子也可用于调试 – charlietfl

回答

-1

当你再次重新声明var baxter要覆盖变量baxter。这将创建一个新的实例和以前的声明将丢失

为了不担心加载顺序和不使用全局变量来表示模块我建议你根本不使用var参考模块和简单地做:

angular.module('baxter').controller('ConversationsCtrl', ... ; 

angular.module('baxter').service('conversationService'.... 

如果多个组件在一个文件中,你也可以把它们连:

angular.module('baxter') 
    .controller('ConversationsCtrl',function(/* dependencies*/){ 

    }) 
    .service('conversationService'.... 

参考:John Papa Angular 1 Style Guide

+0

我不这么认为你所指出的是OP当前问题的一个问题......它有很好的东西.. –