2016-11-08 81 views
0

所以,我试图从服务器读取选项列表,并将其提供给标记,第一个选项为默认 - 这是非常重要的事情 - 但我得到的是模型正确设置,但在选择它显示空白!,我不知道这是为什么!ng-model得到默认的正确,但选择不会显示文本,而是显示空白,而不是

我已经尝试了很多SO资源,hereherehere

视图: -

<select ng-options="option as option.Name for option in options track by option.ID" ng-model="selected"> 

控制器: -

DataService.getOptionsFromServer().then(function (result) { 
    //console.log(result.data); 
    $scope.options = result.data; 
    $scope.selected = $scope.options[0]; 
    console.log($scope.selected); 
}, function (err) { 
    console.error(err); 
}); 

console.log($scope.selected); 

示出所选择的被正确设定! 有帮助吗?

Update1:​​似乎问题是angular和jquery-mobile(不是我添加的)之间的兼容性,任何人都知道这件事吗?

Update2:删除时jquery.mobile.min.js,它工作正常。不幸的是,我需要它抛出这个项目。

Update3:问题是JQM产生一个跨度来显示所选择的值,这就是问题所在!,我绑定了选择,而不是跨度。 问题是,我不能跨度绑定到现在为止,“cuase JQM产生在运行:(跨度,这是注释掉的时候为什么JQM JS它工作正常

Updated4:解决:d ,解决方案如下以供将来参考。

+0

你可以尝试使用ng-init =“selected”吗? –

+0

我重新创建了一个小提琴,它工作得很好:http:// jsfiddle。净/ Lvc0u55v/11726/ – Matheno

+0

似乎工作正常,也是异步加载选项时:https://jsfiddle.net/t2g15fjy/ – devqon

回答

1

问题是JQM不显示选定的价值本身,而不是它获取选定的值,并在运行时放入一个跨度,然后完全隐藏选择,相信我,花费我> 12个小时的努力学习它!

所以为了从选择的JQM重新获得选择的值,并将其发送到显示范围,你必须调用:

jQuery("#SelectId").selectmenu("refresh", true); 

通知,如果你使用的角度和我一样,最好使用“jQuery”而不是“$”来避免angular和jQuery之间的冲突。 D,它的成本超过一个工作日才能得到它:D,希望它会有帮助:D。

importent ref:here

也注意:如果您打算多次使用select,您可以制作一个角度指令:D。

0

也许你不是从服务器获取任何数据,您可以检查?

+0

并非如此,如代码 //console.log (result.data); 我测试了数据。 – Boda

+0

问题更新了,你可以看一下吗? – Boda

+0

您是否可以将$ scope变量的名称从$ scope.options更改为$ scope.items并更改select标签中的相应代码? – GraveyardQueen