【问题标题】:Angular ng-model ng-selectedAngular ng-model ng-selected
【发布时间】:2017-04-02 22:00:28
【问题描述】:

我想将模型值绑定到所选项目

<select id="hours" ng-model="v.T_Hour">
    <option ng-repeat="n in [].constructor(24) track by $index" ng-selected="{{$index==v.T_Hour}}" value="{{$index}}">{{$index>9?$index:"0"+$index}}:00</option>
</select>

我希望在页面加载后,在 select 中选择模型“v.T_Hour”的值,我在控制器中分配模型的值,当我查看生成的 HTML 时,我看到该值被选中在 HTML 代码中,但在 select 控件中没有选中,并且 select 控件显示一个空项。

【问题讨论】:

    标签: angularjs model ng-repeat selected


    【解决方案1】:

    试试这个

    <select                                                      
        name="name" 
        id="id" 
        ng-options="option.name for option in v.data track by option.value" 
        ng-model="v.selected" 
        class="form-control inline-forms">
        <option value="" selected>{{placeHolder}}</option>
    </select>
    

    在控制器中

    $scope.v = {data:[], selected:{}, placeHolder:""}
    $scope.v.data = [{name:"nameOne", value:"valueOne"},{name:"nameTwo", value:"valueTwo"},{name:"nameThree", value:"valueThree"}]
    $scope.v.selected = $scope.v.data[0]
    $scope.v.placeHolder = "Click to Select"
    

    根据 Angular 文档,ngOption 比 ngRepeat 更好: 在 ngRepeat 和 ngOptions 之间进行选择 在许多情况下,可以在元素上使用 ngRepeat 而不是 ngOptions 来实现类似的结果。但是,ngOptions 提供了一些好处:

    在如何通过 select 作为理解表达式的一部分来分配 's 模型方面具有更大的灵活性 通过不为每个重复实例创建新范围来减少内存消耗 通过在 documentFragment 中创建选项而不是单独创建选项来提高渲染速度 具体来说,从 Chrome 和 Internet Explorer / Edge 中的 2000 个选项开始,使用重复选项进行选择会显着降低速度。 见:https://docs.angularjs.org/api/ng/directive/select

    【讨论】:

    • 它适用于 ng-options 但不适用于 ng-repeat ,我使用 ng-repeat 生成从 00:00 到 23:00 的一天时间列表,我的选择值来自 db ,我在我的控制器中分配 v.T_Hour ="value from db",但不工作
    • 你能创建一个plunker来查看真实案例吗?
    猜你喜欢
    • 2016-11-05
    • 2015-05-10
    • 1970-01-01
    • 2015-07-05
    • 2015-11-24
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多