63

我一直在努力寻找示例,但根本找不到任何东西。我唯一知道的是我可以使用 http 模块来获取我的数据。这是我目前正在做的事情,但它是用 Knockout 编码的。有人可以给我一些关于如何使用 AngularJS 重新编码这个功能的建议吗?

HTML

<select id="testAccounts" 
   data-bind="options: testAccounts, optionsValue: 'Id', optionsText: 'Name', optionsCaption: 'Select Account', value: selectedTestAccount">
</select>

Javascript

<script type='text/javascript'>
    $(document).ready(function () {

        var townSelect = function () {
        var self = this;
        self.selectedTestAccount = ko.observable();
        self.testAccounts = ko.observableArray();
        var townViewModel = new townSelect();
        ko.applyBindings(townViewModel);

        $.ajax({
            url: '/Admin/GetTestAccounts',
            data: { applicationId: 3 },
            type: 'GET',
            success: function (data) {
                townViewModel.testAccounts(data);
            }
        });
    });
</script>
4

3 回答 3

148

正确的方法是使用ng-options指令。HTML 看起来像这样。

<select ng-model="selectedTestAccount" 
        ng-options="item.Id as item.Name for item in testAccounts">
    <option value="">Select Account</option>
</select>

JavaScript:

angular.module('test', []).controller('DemoCtrl', function ($scope, $http) {
    $scope.selectedTestAccount = null;
    $scope.testAccounts = [];

    $http({
            method: 'GET',
            url: '/Admin/GetTestAccounts',
            data: { applicationId: 3 }
        }).success(function (result) {
        $scope.testAccounts = result;
    });
});

您还需要确保 Angular 在您的 html 上运行并且您的模块已加载。

<html ng-app="test">
    <body ng-controller="DemoCtrl">
    ....
    </body>
</html>
于 2013-03-28T17:35:05.623 回答
35
<select name="selectedFacilityId" ng-model="selectedFacilityId">
         <option ng-repeat="facility in facilities" value="{{facility.id}}">{{facility.name}}</option>
     </select>  

这是一个关于如何使用它的例子。

于 2013-03-28T17:28:34.240 回答
1

在我的 Angular Bootstrap 下拉菜单中,我使用 ng-init 初始化 JSON 数组 (vm.zoneDropdown)(您也可以在指令模板中使用 ng-init),然后在自定义 src 属性中传递数组

<custom-dropdown control-id="zone" label="Zona" model="vm.form.zone" src="vm.zoneDropdown"
                         ng-init="vm.getZoneDropdownSrc()" is-required="true" form="farmaciaForm" css-class="custom-dropdown col-md-3"></custom-dropdown>

控制器内部:

vm.zoneDropdown = [];
vm.getZoneDropdownSrc = function () {
    vm.zoneDropdown = $customService.getZone();
}

在 customDropdown 指令模板中(请注意,这只是引导下拉菜单的一部分):

<ul class="uib-dropdown-menu" role="menu" aria-labelledby="btn-append-to-body">
    <li role="menuitem" ng-repeat="dropdownItem in vm.src" ng-click="vm.setValue(dropdownItem)">
        <a ng-click="vm.preventDefault($event)" href="##">{{dropdownItem.text}}</a>
    </li>
</ul>
于 2015-11-24T14:49:08.073 回答