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