Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs,选择,添加选项_Javascript_Jquery Ui_Angularjs - Fatal编程技术网

Javascript angularjs,选择,添加选项

Javascript angularjs,选择,添加选项,javascript,jquery-ui,angularjs,Javascript,Jquery Ui,Angularjs,我正在尝试向select元素添加一个选项。该值由jquery ui模式中的用户窗体提供 当我使用Chrome开发者工具时,我可以看到绑定对象数组确实获得了新对象,但它没有显示在select元素中 我在控制台中使用了$('#company').scope().vendors来启动阵列。它显示正在添加到数组中的项,但它们不显示在“选择”框中 以下是我所拥有的: app.js app.factory('Vendors', function(){ var Vendors = {}; V

我正在尝试向select元素添加一个选项。该值由jquery ui模式中的用户窗体提供

当我使用Chrome开发者工具时,我可以看到绑定对象数组确实获得了新对象,但它没有显示在select元素中

我在控制台中使用了$('#company').scope().vendors来启动阵列。它显示正在添加到数组中的项,但它们不显示在“选择”框中

以下是我所拥有的:

app.js

app.factory('Vendors', function(){
    var Vendors = {};

    Vendors.list = [
    {
        id: 1,
        name: 'Company 1'
    },
    {
        id: 2,
        name: 'Company 2'
    },
    {
        id: 3,
        name: 'Company 3'
    }
    ]

    return Vendors;
})

app.controller('companyCtrl', function($scope, Vendors){
    $scope.vendors = Vendors;

    $scope.selectedVendor = 0;

    $scope.companySelect = function(){
        alert("You chose " + $scope.selectedVendor.name)
    }

    $scope.addCompany = function(name){
        var maxId = 0;

        for(var i=0; i<$scope.vendors.list.length; i++){
            maxId = $scope.vendors.list[i].id;
        }

        newVendor = {id:++maxId, name:name};

        $scope.vendors.list.push(newVendor)
        $scope.selectedVendor = newVendor;
    }
})
我尝试创建一个JSFIDLE,但我想我还不太确定如何让那里的一切都正常工作。但这是我的尝试:

试试这个:

$scope.$apply(function(){
    $scope.vendors.list.push(newVendor);
    $scope.selectedVendor = newVendor;
});

您应该有
$scope.selectedVendor=newVendor.id当我控制台.log'd selectedVendor时,它是整个对象,而不仅仅是id。添加.id似乎没有帮助。将其替换为$scope.vendors.list.push(newVendor);工作。谢谢它现在将其添加到“选择”中,但仍不选择它。我是否也需要将selectedVendor分配添加到$apply函数中?我必须删除.id才能使其工作,但将其添加到$apply函数中就完成了这项工作。谢谢你回答我的新问题。:)
    $( "#addCompany" ).dialog({
        autoOpen: false,
        width: 350,
        modal: true,
        buttons: {
            "Create new company": function() {
                var name = $('#name').val();

                if(name != ''){
                    $('#company').scope().addCompany(name);
                }

                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            $('#name').val( "" );
        }
    });

    function openModal(id){
        $('#'+id).dialog('open');
    }
$scope.$apply(function(){
    $scope.vendors.list.push(newVendor);
    $scope.selectedVendor = newVendor;
});