2015-08-04 3 views
0

Я создал свой собственный модуль с поставщиком. Я хочу, чтобы другие пользователи могли изменять конфигурации по умолчанию:Угловой поставщик, не устанавливающий значение

angular.module('mymodule').provider('mymoduleConfig', [function() { 

    var object = { 
     theme: 'default' 
    }; 

    var updated = {}; 

    this.setConfig = function(override) { 
     console.log('Config updated...', override); 
     updated = override; 
    } 

    return { 
     $get: function() { 
      return { 
       config: angular.extend(object, updated) 
      } 
     } 
    } 
}]); 

В моем собственном приложении, я включаю mymodule и попытаться использовать setConfig, однако это не вызывает. Когда я называю `

angular.module('example', ['mymodule']) 

angular.module('example').config(['mymoduleConfigProvider', function(mymoduleConfigProvider) { 
    mymoduleConfigProvider.setConfig({ 
     theme: 'bootstrap' 
    }); 
}]); 

setConfig никогда не вызывается, но я не могу понять, почему!

ответ

0

setConfig метод должен храниться вне рекурсивного объекта, и его необходимо добавить внутри this контекст функции.

Тогда он может быть доступен из фазы конфигурации

Update

Причина не работает это вы явно возвращающий объект от поставщика, который смывает метод this.setConfig как вы были также включала функцию $get в этом объекте, поэтому она доступна в вашей текущей реализации. Я бы посоветовал вам не возвращать объект от поставщика, вам следует создать функцию this.$get, а затем назначить из нее объект возврата.

Provider

angular.module('mymodule', []).provider('mymoduleConfig', [function() { 

    var object = { 
    theme: 'default' 
    }; 

    var updated = {}; 

    this.setConfig = function(override) { 
    console.log('Config updated...', override); 
    updated = override; 
    } 

    this.$get = function() { 
    //returning object from `.$get` function 
    return { 
     config: angular.extend(object, updated) 
    } 
    } 
}]); 

Working Plunkr

+0

Я обновил свой вопрос он, по-прежнему не работает :( – Alias

+0

@Alias ​​ли это помогло вам? .. –

Смежные вопросы