代码之家  ›  专栏  ›  技术社区  ›  silvster27

使用填充阵列动态创建的下拉列表不会使用角度

  •  0
  • silvster27  · 技术社区  · 10 年前

    我的第一个下拉列表在页面加载时正确加载,但子下拉列表在第一个下拉菜单之后从本地存储加载。问题是当我加载第二个下拉列表并为其分配默认值时,我无法再更改其值。 http://jsfiddle.net/silvajeff/x2nrX/3/

    angular.module('demoApp', []).controller('DemoController', function($scope) {
      //my first drop down loads with the page
      $scope.options = [
         { label: 'one', value: 1 },
         { label: 'two', value: 2 },
         { label: 'three', value: 3 },
         { label: 'four', value: 4 },
         { label: 'five', value: 5 }
      ];  
    
      $scope.firstSelect = $scope.options[3];  
    
    //the second drop down loads after the first makes a selection. In the real code I am     populating the second from localstorage, but once it's assigned its default value I cannot change it.    
    var init = function(){
       //depends on what was selected in first select
        $scope.captions = [
           { name: 'A', value: 'a' },
           { name: 'B', value: 'b' },
           { name: 'C', value: 'c' },
           { name: 'D', value: 'd' },
           { name: 'E', value: 'e' }
       ]; 
        $scope.secondSelect = $scope.captions[1];
    }   
    init();
    
    });
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   sylwester    10 年前

    请更改ng,如果为ng显示,第二个下拉列表将起作用 http://jsfiddle.net/Wc4CQ/

    <body ng-app="demoApp">
        <div ng-controller="DemoController">
    
            <div>
    
                <select ng-model="firstSelect"
                    ng-options="opt as opt.label for opt in options">
                </select>
    <br><br>
                <select  ng-show="firstSelect.value == '4'" ng-model="secondSelect"
                    ng-options="opt as opt.name for opt in captions">
                </select><br>
                The first select value is {{ firstSelect.value }}<br>
                Why can't I get the second select value to update: {{ secondSelect.value }}
            </div>
    
        </div>
    </body>
    

    或者,如果您必须联系我们,请参见此处: http://jsfiddle.net/y5Bvv/

    <body ng-app="demoApp">
        <div ng-controller="DemoController">
            <div>
                <select ng-model="firstSelect" ng-options="opt as opt.label for opt in options"></select>
                <br>
                <br>
                <select ng-if="firstSelect.value == '4'" ng-model="secondSelect.select" ng-options="opt as opt.name for opt in captions"></select>
                <br>The first select value is {{ firstSelect.value }}
                <br>Why can't I get the second select value to update: {{ secondSelect.select.value }}</div>
        </div>
    </body>
    

    JS文件:

    angular.module('demoApp', []).controller('DemoController', function ($scope) {
        //my first drop down loads with the page
        $scope.options = [{
            label: 'one',
            value: 1
        }, {
            label: 'two',
            value: 2
        }, {
            label: 'three',
            value: 3
        }, {
            label: 'four',
            value: 4
        }, {
            label: 'five',
            value: 5
        }];
        $scope.firstSelect = $scope.options[3];
    
        //the second drop down loads after the first makes a selection. In the real code I am populating the second from localstorage, but once it's assigned its default value I cannot change it.    
        var init = function () {
            //depends on what was selected in first select
            $scope.captions = [{
                name: 'A',
                value: 'a'
            }, {
                name: 'B',
                value: 'b'
            }, {
                name: 'C',
                value: 'c'
            }, {
                name: 'D',
                value: 'd'
            }, {
                name: 'E',
                value: 'e'
            }];
            $scope.secondSelect = {};
            $scope.secondSelect.select = $scope.captions[1];
        }
        init();
    
    });