2017-01-13 3 views
0

Я пытаюсь установить объект, который называется channelid с каналом свойств. Однако, когда я пытаюсь получить доступ к нему я вернусь Object {}Не удается получить доступ к свойствам объекта в угловом сервисе

Service

function Service($http){ 
    var service = this; 
    var channelid = {}; 

    // Set channel ID 
    service.SetChannelID = function(id){ 
    channelid.channel = id; 
    }; 

    // Get Channel Id 
    service.GetChannelID = function(){ 
    return channelid; 
    }; 

Контроллер

// Set channel id 
Service.SetChannelID(channel.id); 

// Retrieve channel id 
var channelID = Service.GetChannelID(); 

При попытке доступа к нему.

console.log(channelID.channel); 

Он печатает неопределенными

если я печатаю

console.log(channelID); 

Он печатает объект {}

>Object 
    channel:"C3NBGTQJD" 
    __proto__: Object 

не является объектом {канал: "C3NBGTQJD"}

+1

потому что 'channelid' частная переменная' функции .. Вы 'обслуживания не может получить доступ через Экземпляр функции «Сервис» ... Вы сотрудничаете uld получает это значение только через 'getter' &' setter', что у вас уже было –

+0

'Service.SetChannelID', похоже, не определено. 'SetChannelID' определяется только для экземпляров' Service', а не для самой функции-конструктора. – 4castle

+0

Служба - это функция класса/конструктора. Вы создали экземпляр? var service = new Service(); А затем вызовите методы? – Hoyen

ответ

0

Для ссылку вы можете следовать скрипку

"http://jsfiddle.net/ADukg/9158/" 

Сервис

myApp.service('myService', function(){ 
    var channelObj={}; 
    var service = this; 

    service.setChannelId = function(id) { 
    channelObj.channel = id; 
    }; 

    service.getChannel = function() { 
    return channelObj; 
    } 

}); 

Контроллер

$scope.setChannelId = function (id) { 
     myService.setChannelId(id); 
} 

$scope.getChannelId = function() { 
     var channelObj = myService.getChannel() 
     alert(channelObj.channel); 
} 

шаблон

<div ng-controller="MyCtrl"> 
    <button ng-click="setChannelId(5)"> 
    Set Channel 
    </button> 
    <button ng-click="getChannelId()"> 
    Get Channel 
    </button> 

</div> 
+0

Я пытаюсь достичь этого: var channelObj = myService.getChannel(); функция GetChannelDataById (channelObj.channel); Функция GetChannelDataById (id) { // сделать что-то } – payucon