从select到scope添加值而不定义ng-options

时间:2014-04-17 20:33:36

标签: javascript angularjs

所以我试图从select中获取值并将它们添加到范围并保持更新,我通常会通过ng-model进行更新而没有问题。问题是由于我需要的工作流程,我需要这个选择不是角度供电。

我遇到的问题是如何添加ng-model引用而不获取添加的空白选项,因为我没有提供任何ng-options数组。

有没有办法完成我的目标?我知道空的默认值会被添加,因为我没有定义任何选项和/或默认情况下options.language在我的范围内不存在,我的问题是,我可以以某种方式解决这个问题吗?

此处的最终目标是能够将此控制器标记到任何表单上,使用ng-model="options.myOption"标记选择,并在控制器范围内随时获取所有这些选项。

测试标记:

<select name="language" ng-model="options.language">
    <option value="en_US">English</option>
    <option value="fr_FR">French</option>
    <option value="es_ES">Spanish</option>
    <option value="de_DE">German</option>
    <option value="zh_CN">Chinese</option>
    <option value="ja_JP">Japanese</option>
</select>

测试javascript:

var app = angular.module('myApp', [])
.controller("myController", ['$scope', '$log', function($scope, $log){
    $scope.options=[];
    $scope.$watch("options.language", function(){
        $log.log($scope.options.language);
    });
}])

JS小提琴:http://jsfiddle.net/CgRZn/

1 个答案:

答案 0 :(得分:1)

您可以使用ng-init指令将默认值分配给范围,而无需触及脚本。像这样:

<select name="language" ng-model="options.language" ng-init="options.language='en_US'">
    <option value="en_US">English</option>
    <option value="fr_FR">French</option>
    <option value="es_ES">Spanish</option>
    <option value="de_DE">German</option>
    <option value="zh_CN">Chinese</option>
    <option value="ja_JP">Japanese</option>
</select>

这里是fiddle