ng-model不绑定选择选项

时间:2016-10-19 11:41:49

标签: javascript angularjs

我已经搜索了很多内容,并且无法弄清楚我的代码中出了什么问题。从选择框中选择选项时,我的ng-model没有更新。

<div ng-controller="UserRegistrationController as userReg">
  <select name="selectOrganisation" ng-required="true" ng-model="userReg.candidateData.BusinessUnit">
        <option>Select Organisation</option>
        <option>ABC</option>
        <option>XYZ</option>
        <option>KLM</option>
  </select>
</div>

控制器:

(function (window) {
'use strict';

angular.module('myApp.userRegistration.controllers')
    .controller('UserRegistrationController', ['UserRegistrationService', '$scope', function (UserRegistrationService, $scope) {
        var vm = this;

        vm.candidateData = {
            FirstName: '',
            LastName: '',
            Email: '',
            PhoneNumber: '',
            JobId: '',
            PrimarySkills: '',
            SecondarySkills: '',
            BusinessUnit: '',
            CreatedBy: 'SPAN54',
            CreatedOn: new Date(),
            resume: '',
            OfferStatus: 1,
            Remarks: ''
        };

    }]);
})(window);

在我的post函数里面的console.log(vm.candidateData.BusinessUnit)(这里不可见),我看到&#34; &#34;

更新1:&#34;在我的代码中。我在这里粘贴时忽略了它。现在更新了上面的代码。但我的代码仍无效。

更新2:最后,我想出了这个问题。我在我的应用程序中使用Materialise.css,我的select元素被包含在div和ul-li中。因此,当用户选择一个值时,他实际上是在修改ul-li,而不是select元素。但我无法弄清楚如何捕捉这样的选定值。有任何想法吗?感谢。

更新3:添加了fiddle

2 个答案:

答案 0 :(得分:1)

尝试了您发布的代码。它为我工作。我在下面添加了Working Code Snippet。

这些更改是否有效?如果它仍然不适合你,你可以分享一个工作片段。

  • 添加双引号以结束ng-controller atrribute。<div ng-controller="UserRegistrationController as userReg>
  • 从控制器中删除 UserRegistrationService 声明,因为它未定义或共享。

var app = angular.module('sample', []);

app.controller('UserRegistrationController', ['$scope', function($scope) {
  var vm = this;
  vm.candidateData = {
    FirstName: '',
    LastName: '',
    Email: '',
    PhoneNumber: '',
    JobId: '',
    PrimarySkills: '',
    SecondarySkills: '',
    BusinessUnit: '',
    CreatedBy: 'SPAN54',
    CreatedOn: new Date(),
    resume: '',
    OfferStatus: 1,
    Remarks: ''
  };
  $scope.change = function() {
    console.log(vm.candidateData.BusinessUnit);
  }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="sample"> 
  
<div ng-controller="UserRegistrationController as userReg">
    <select ng-change="change()" name="selectOrganisation" ng-required="true" ng-model="userReg.candidateData.BusinessUnit">
        <option>Select Organisation</option>
        <option>ABC</option>
        <option>XYZ</option>
        <option>KLM</option>
    </select>
</div>
  
</body>

答案 1 :(得分:0)

这是您的工作代码JS FIDDLE 你错过了ng-controller中的'''

<div ng-controller="UserRegistrationController as userReg">