ng-repeat中的默认选择值始终在select中向控制器发送null

时间:2016-03-21 19:04:59

标签: angularjs angularjs-ng-repeat angular-ngmodel angularjs-ng-options

我有下面的代码,它成功地设置了所选的默认值但是当没有触及这个dropdpwn时,如果将值发送到控制器,则它变为null。但如果我更改选项值,则值将传递给控制器​​。我在这里失踪了什么?

{"skuList":["abc", "xyz", "ghr"]}

config是一个字符串数组。像

            'use strict';

            angular.module('TheSimpleApp', [
              'ui.router'
            ])
              .config(['$stateProvider',
                function($stateProvider) {

                  $stateProvider
                    .state('home', {
                      url: '/home',
                      views: {
                        'main': {
                          controller: 'HomeCtrl',
                          template: '<div>' +
                            '<h1>hello from parent</h1>' +
                            '<hr />' +
                            '<div ui-view="nameOtherThenSpace" ></div>' +
                            '<div>{{test}}</div>'+
                            '<select ng-model="detail.skuName" class="form-input-wrapper form-select-hidden">'+
                            '<option data-ng-repeat="sku in config.skuList" ng-selected="sku">{{sku}}'+
                            '</option>'+
                            '</select>'+
                            '<div>'+
                            '<a href="#" ng-click="send(detail)">send</a>',
                        }
                      }
                    })
                    .state('home.details', {
                      url: '/details',
                      views: {
                        "nameOtherThenSpace": {
                          template: "<h2>hello from a child</h3>",
                          controller: function($scope, $http, $state) {},
                        }
                      }
                    });
                }
              ])
              .controller('HomeCtrl', function($scope, $http, $state) {
                $scope.test = "Test Me";
                $scope.config = {"skuList":["abc", "xyz", "ghr"]};
                $scope.send = function(detail){
                  alert(angular.toJson(detail));

                }

              })

            .config([ '$urlRouterProvider',
              function($urlRouterProvider) {

                $urlRouterProvider.otherwise('/home');
              }
            ]);

你能帮忙吗

编辑: 使用示例代码。

{{1}}

使用上面的代码替换此plunker上的script.js以显示问题,单击send而不更改加载时的下拉值,未定义传递,更改下拉值,一切正常。我正在寻找正确传递的值而不改变下拉值。

http://plnkr.co/edit/o91TgJXTcFVDFA9SUmSC?p=preview

1 个答案:

答案 0 :(得分:0)

您可以查看传递数据的方式吗?在这里找到具有相同数据的样本

sample

希望这有助于解决您的问题。