Angular JS - шаблон директивы ng -model не работает внутри ng -switch

0

Чтобы стать более динамичным, моя директива решила включить поле категории, которое делает выбор типа шаблона для отображения. Поскольку это только избранная мысль об использовании switch-ng вместо нескольких html файлов. (Гугл переводчик)

Plunker: http://plnkr.co/edit/fnCJj15XJN1kQvKq1OtZ?p=preview

index.html

<div ng-controller="MainCtrl">
<sg-combo 
  selected-item="selectedItem" categoria="filtro">
</sg-combo>

{{selectedItem}}

script.js

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
  $scope.selectedItem = {value: null};
  $scope.$watch('selectedItem',function(item){
  if (item != null){
    alert(item.nome); // does not display when updating
  }
 })
});

app.directive('sgCombo', function(){
function link(scope, elem, attrs){    
        scope.dados = [
            {'codigo':1, 'nome':'teste1'},
            {'codigo':2, 'nome':'teste2'},
            {'codigo':3, 'nome':'teste3'}
        ];
}

return {
        restrict: 'E',          
    scope: {            
        selectedItem: '=',            
        categoria: '@'            
    },
    link: link,
    templateUrl:"sg-combo.html"
 }
})

SG-combo.html

<div ng-switch="categoria">
 <div ng-switch-when="filtro" class="col-sm-4 control-label">
   <div class="col-sm-4 control-label">
     <label>{{label}}</label>
     <select ng-model="selectedItem.value" ng-options="item.nome for item in dados" class="form-control"></select>
   </div>
 </div>
 <div ng-switch-when="anexo" class="col-sm-4 control-label">
  <div class="col-sm-4 control-label">
    <label>{{label}}</label>
    <select ng-model="selectedItem.value" ng-options="item.nome for item in dados" class="form-control"></select>
  </div>
 </div>
</div>
Теги:
angularjs-directive

3 ответа

0
Лучший ответ

ответил

portugflow portugueses

https://pt.stackoverflow.com/questions/105410/angular-js-template-de-uma-directiva-com-ng-model-n%C3%A3o-funciona-dentro-de-ng-sw/106260# 106260

0
  • 0
    Это плохая идея изменить исходный код, о котором идет речь, поэтому мой ответ может кого-то запутать. Пожалуйста, проверьте оригинальную версию
0

Попробуйте сделать 'selectedItem' частью объекта. Например:

В контроллере: $ scope.options = {'selectedItem': someItem};

В шаблоне: ng-model = "options.selectedItem"

  • 0
    Я не понял, могли бы проиллюстрировать код?
  • 0
    Я вижу, вы редактировали код, делая то, что я предложил здесь. Это сработало? Если это так, апвот будет неплохо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню