ng-model在select指令中不起作用

时间:2015-05-08 19:21:26

标签: angularjs angularjs-directive angularjs-model

工作正常: ng-options包含所有名称,并显示在下拉列表中。

问题:

  1. 如果未选择任何内容,则应显示“选择名称...”文本。但现在它已经空了。
  2. 我知道它被问了很多,但我没有找到这个案例的解决方案。 如果我将选择其中一些选项错误
  3.   

    “错误:[$ compile:nonassign]表达式'undefined'用于   指令'fileWidget'是不可分配的!“发生了。

    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 个答案:

答案 0 :(得分: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"