【问题标题】:ng-model gets defaulted correctly, but select won't show the text, shows blank insteadng-model 正确默认,但选择不会显示文本,而是显示空白
【发布时间】:2016-11-08 10:53:54
【问题描述】:

所以,我正在尝试从服务器读取选项列表,并将其提供给标记,默认第一个选项 - 这是非常重要的事情 - 但我所拥有的只是模型设置正确,但在选择中显示为空白!我不知道为什么会这样!

我尝试了很多 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 产生了一个跨度来显示所选值,这就是问题所在!我绑定了选择,而不是跨度。 问题是我现在无法绑定跨度,'因为 JQM 在运行时生成跨度:(,这就是为什么在注释掉 JQM js 时它工作正常。

更新4:已解决:D,下面给出的解决方案供将来参考。

【问题讨论】:

  • 您可以尝试使用 ng-init="selected" 吗?
  • 我重新制作了一个小提琴,效果很好:jsfiddle.net/Lvc0u55v/11726
  • 似乎工作正常,在异步加载选项时也是如此:jsfiddle.net/t2g15fjy
  • @Matheno 我看过小提琴,但它不适用于我的项目,你认为这可能与项目是 Cordova 项目有关吗?!
  • @devqon 我已经看到了小提琴,但它不适用于我的项目,你认为这可能与项目是 Cordova 项目有关吗?!

标签: javascript angularjs cordova jquery-mobile ng-options


【解决方案1】:

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

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

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

请注意,如果您像我一样使用 angular,最好使用“jQuery”而不是“$”,以避免 angular 和 jQuery 之间的冲突。

不要掉以轻心:D,获得它的成本超过一个工作日:D,希望它会有所帮助:D。

重要参考:here.

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

【讨论】:

    【解决方案2】:

    也许你没有从服务器获取任何数据,你能检查一下吗?

    【讨论】:

    • 不正确,可以在代码中看到 //console.log(result.data);我已经测试了数据。
    • 你能不能把$scope变量的名字从$scope.options改成$scope.items,然后修改select标签里的对应代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多