2014-08-27 3 views
0

Я не могу получить директиву ng-init в своем элементе выбора с помощью AngularJs. Не выбран вариант, даже id productQuantity/unitName имеет значение.AngularJs выберите директиву с значением инициализации из другого атрибута scope

Вот как формируется мой JSON объект:

inventoryLines: Array[1] 
0: Object 
    permitedFormatUnits: Array[2] 
    0: Object 
     unitName: "Kilo" 
    1: Object 
     unitName: "Gramme 
    productQuantity: Object 
    formatUnit: Object 
     unitName: "Gramme" 
    quantity: 456 

Мне нужно permitedFormatUnits быть выбор, который пользователь может сделать и productQuantity/formatUnit, чтобы быть значение нг-инициализации и значение нг-модель хорошо.

Вот мой HTML, где линия представляет inventoryLines в цикле нг повторов:

<select class="selectpicker" name="unitFormat" 
    ng-init="formatUnit = line.productQuantity.formatUnit.unitName" 
    ng-model="line.productQuantity.formatUnit" 
    ng-options="formatUnit as formatUnit.unitName for formatUnit in line.permitedFormatUnits"> 
</select> 

Спасибо вам большое за вашу помощь, надеюсь, что я достаточно ясно! :

ответ

0

Вот рабочая plunkr: http://plnkr.co/edit/TyWqjW2KQ0LEngWX9uVx

Вы должны использовать track by, чтобы сделать его работу (см документ - https://docs.angularjs.org/api/ng/directive/select):

<select class="selectpicker" name="unitFormat" 
     ng-init="formatUnit = line.productQuantity.formatUnit" 
     ng-model="line.productQuantity.formatUnit" 
     ng-options="formatUnit as formatUnit.unitName for formatUnit in line.permitedFormatUnits track by formatUnit.unitName"> 
</select> 

в ЯШ:

angular.module('myApp', []) 
    .controller('myCtrl', function($scope) { 
     $scope.line = { 
      permitedFormatUnits: [{ 
       unitName: "Kilo" 
      }, { 
       unitName: "Gramme" 
      }], 
      productQuantity: { 
       formatUnit: { 
        unitName: "Gramme", 
        quantity: 456 
       } 
      } 

     } 
    }) 
+0

Большое спасибо!! Я был очень близок! :) – leseulsteve

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