2016-04-19 17 views
5

Q. Tại sao trình đơn thả xuống của tôi không hiển thị giá trị được chọn? Đây là đoạn mã javascript mà tôi cóAngularJS chọn với các tùy chọn mã hóa cứng

<div ng-app="myApp"> 
<div ng-controller="MyCtrl"> 
    <select ng-model="myModel.Active" convert-to-number> 
     <option value="-1">Select</option> 
     <option value="1">Yes</option> 
     <option value="2">No</option> 
     <option value="3">Maybe</option> 
    </select> 
    <span>{{myModel.Active}}</span> 
</div> 
</div> 

Các javascript link

var myApp = angular.module("myApp",[]); 
myApp.controller("MyCtrl", function($scope){ 
     $scope.myModel = {}; 
     $scope.myModel.Active=2; // 

}); 

Các js-fiddle - https://jsfiddle.net/shatherali/4mxwzL5y/19/

Edit: Xin lưu ý tôi không muốn sử dụng Chuỗi giá trị. Hoạt động phải là giá trị số.

+0

Lệnh 'chuyển đổi-to-number' từ http://stackoverflow.com/a/34114258/652669 không hoạt động? –

+0

Không phải cho tôi ít nhất, có thể tôi đang làm sai điều gì đó mà tôi không thể tìm ra. Tôi cập nhật fiddle với chuyển đổi thành số – ATHER

+0

Xem câu trả lời của tôi, tôi đã liên kết một bản trình diễn với 'chuyển đổi thành số' hoạt động tốt. Hy vọng nó sẽ giúp bạn –

Trả lời

3

Điều này giải quyết vấn đề của bạn:

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

myApp.controller('MyCtrl', function ($scope) { 
     $scope.myModel = {}; 
     $scope.myModel.Active = '2'; // it's a string 
}); 

DEMO


Chỉ thị convert-to-number hoạt động tốt.

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

myApp.directive('convertToNumber', function() { 
    return { 
     require: 'ngModel', 
     link: function(scope, element, attrs, ngModel) { 
      ngModel.$parsers.push(function(val) { 
       return parseInt(val, 10); 
      }); 
      ngModel.$formatters.push(function(val) { 
       return '' + val; 
      }); 
     } 
    }; 
}); 

DEMO

+0

Cảm ơn, tôi chỉ cập nhật câu hỏi, tôi không thể thay đổi giá trị thành chuỗi, nó phải giữ số – ATHER

+0

Vì vậy, về cơ bản giải pháp là sử dụng giá trị chuỗi hoặc tạo chỉ thị của riêng bạn để sử dụng giá trị đó giống như bạn đã làm), bất kỳ ý tưởng nào tại sao được xây dựng trong chỉ thị chuyển đổi sang số không hoạt động? – ATHER

+0

Đó không phải là chỉ thị tích hợp! :) Trên thực tế, chúng làm cho chỉ thị 'select' của chúng được sử dụng với thuộc tính' ng-options'. Họ nên đã làm một chỉ thị 'option' để ghi đè lên một mặc định nhưng họ đã không, vì vậy bạn phải sử dụng các giá trị chuỗi hoặc để" hack "nó. :/ –

Các vấn đề liên quan