2

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

问题:

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

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

几何服务.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: '&',
            },
           ....
        }
    )
}

输入控制器.js

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

文件小部件.html

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

有任何想法吗?

4

1 回答 1

2

为了拥有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"
于 2015-05-08T19:27:56.320 回答