Угловой 1.5. компонент - каков наилучший способ отличить родительский контроллер через свойство binded?
У меня есть компонент AngularJS 1.5, который представляет выпадающий список с опциями ng. Особенность заключается в том, что эти параметры ng динамически заполняются различными данными (из константных файлов), в зависимости от значения свойства name, которое привязано к компоненту и поступает от родительского контроллера.
Например, мой компонент выглядит так:
test.component.js
angular
.module('test.component')
.component('Selector', {
controller: Selector,
controllerAs: 'vm',
templateUrl: 'selector.html',
bindings: {
model: '=',
form: '<',
name:'@',
label:'@',
constant: '<',
}
});
function Selector(CONSTANTS, SOME_OTHER_CONSTANTS) {
var vm = this;
switch(vm.name) {
case 'Name1':
vm.constant = CONSTANTS;
break;
case 'Name2' :
vm.constant = SOME_OTHER_CONSTANTS;
break;
}
}
Итак, с точки зрения родительского контроллера, это выглядит так:
Родитель-view.html
<selector
name="Name1"
form="vm.myForm"
model="vm.myModel>
</selector>
Это работает нормально, но, возможно, не стоит отличать родительский контроллер от данных через name
свойство, поскольку оно используется в основном для проверки формы. Что лучше использовать, чтобы выделить родительский контроллер, чтобы иметь возможность заполнять различные данные в ng-опциях в зависимости от этого?
Любая помощь и предложения будут с благодарностью.
1 ответ
Если у вас есть только 2 из этих констант - используйте, если кажется, что все в порядке, если у вас есть как 20 различных, вы можете пойти с инжектором:
function Selector($injector) {
var vm = this;
vm.constant = $injector.get(constantProvider);
}
<selector
constant-provider="SOME_OTHER_CONSTANTS"
form="vm.myForm"
model="vm.myModel>
</selector>
Если у вас есть несколько мест, где вы хотите обращаться к константам по именам, вы можете попробовать создать отдельную фабрику для хранения всех этих маленьких констант:
module.factory('MyConstants', function(CONSTANTS, SOME_OTHER_CONSTANTS) {
return {
name1: CONSTANTS, name2: SOME_OTHER_CONSTANTS
}
});