2015-05-08 1 views
1

Работает:ng-options содержит все имена, и это показано в выпадающем списке.ng-model не работает в директиве select

Проблема:

  1. В начале, если ничего не выбрано, необходимо текст "Выберите имя ..." отображается. Но сейчас пусто.
  2. Я знаю, что его много спрашивали, но я не нашел решения с этим делом. Если я выберу некоторые из этих опций Ошибка

"Error: [$compile:nonassign] Expression 'undefined' used with directive 'fileWidget' is non-assignable!" occured.

GeometryService.js

angular.module('COMLEAMclient') 
.factory('GeometryService', function($resource) { 

    var selectedGeometry = {name:'Select name...'}; 
} 

FileWidgetDirective.js

angular.module('COMLEAMclient') 
.directive('fileWidget', ['$log', '$parse', function($log, $parse) { 

     return { 
      scope: { 
       data: '=', 
       selectedFile: '=', 
       updateSelection: '&', 
       selected: '=', 
       onReadFile: '&', 
      }, 
      .... 
     } 
    ) 
} 

InputController.js

<div file-widget data="iCtrl.geometryFiles" update-selection= "iCtrl.setSelectedGeometry(name)" selectedFile= "iCtrl.selectedGeometryFile" on-read-file="iCtrl.saveGeometryFiles(file,name)"></div> 

FileWidget.html

<select class="form-control" 
    ng-options="elem.name for elem in data" 
    ng-model="selectedFile" 
    ng-change="onSelectionChange()"> 
</select> 

Любые идеи?

ответ

1

Для того, чтобы иметь Select name... вам нужно иметь option элемент:

<select class="form-control" 
    ng-options="elem.name for elem in data" 
    ng-model="selectedFile" 
    ng-change="onSelectionChange()"> 
    <option value="">Select name...</option> 
</select> 

Вы пытаетесь присвоить объект, и это не назначаемый, поэтому вы получаете ошибку non-assignable. Вы должны иметь переменную, которая может содержать значение выбранного параметра, попробуйте:

ng-model="selectedFile.name" 
+0

Я canged мой код <выберите класс = «форм-контроль» нг-опционами = "elem.name для элем в данных» нг-модель = "selectedFile.name" нг-изменение = "OnSelectionChange()"> <параметр значение = ""> Выберите имя ... но получил все тот же excepion. вероятно, есть нечто большее, чем просто это. –

+0

@MarcelTinner Возможно, 'selectedFile.name' также не назначается. Можете ли вы поделиться этим объектом? –

+0

это может быть указано в GeometryService.js -> var selectedGeometry = {name: 'Select name ...'}; –