【问题标题】:Disable selectbox with ng-options in angularjs在angularjs中禁用带有ng-options的选择框
【发布时间】:2015-12-01 08:47:14
【问题描述】:

你好,我怎样才能禁用一个选择框,让用户只能看到选择框的实际值而不能改变里面的内容。它用于离子框架移动应用程序。

我的选择框在这里看起来像这样:

<select ng-class="nightMode"
        ng-options="option as option.label for option in item.Options track by option.id"
        ng-change="item.Call(item.SettingKey,item.Checked.id)"
        ng-model="item.Checked">
</select>

我尝试使用 ng-disabled、在 ng-options 中禁用、ng-readonly,但这些都不适合我。那么实现这一目标的正确方法是什么?

ng-禁用示例:

<select ng-class="nightMode"
        ng-options="option as option.label for option in item.Options track by option.id"
        ng-disabled="true"
        ng-change="item.Call(item.SettingKey,item.Checked.id)"
        ng-model="item.Checked">
</select>

更新: 我尝试了建议的解决方法之一:

<select ng-class="nightMode"
        ng-change="item.Call(item.SettingKey,item.Checked.id)"
        ng-model="item.Checked">
  <option ng-repeat="option in item.Options" value="option.id" ng-disabled="true" ng-selected="item.Checked.id==option.id">{{option.label}}</option>
</select>

但我可以切换到选择框内的空条目并将选择框的值设置为未定义。

【问题讨论】:

  • 您的ng-disabled 代码在哪里?
  • 我在选择标签中使用了 ng-disabled 但它不起作用。
  • 应该是ng-disabled 而不是ng-disable
  • 可能是 typeo cz op 提到的`ng-disable, disable inside the ng-options` @TjaartvanderWalt
  • 您想禁用选项或自行选择框吗? @Kingalione

标签: javascript angularjs ionic-framework html-select


【解决方案1】:

您的代码 sn-p 还不清楚。但我可以使用 disabled="true" 禁用此选择。

Check out my working
http://plnkr.co/edit/xDefIzZ3YleYcyAmQYHj?p=preview

Here are better code snippet editor :

http://plnkr.co/

http://jsfiddle.net/

【讨论】:

  • plnkr 和 jsfiddle 里面没有内容
  • 是的 .. 我不能在 href 标签中发布 plnkr 链接。检查我编辑的答案
  • 好的,我看到它在普通浏览器上工作了。也许它对我不起作用,因为我在离子框架移动应用程序中使用了这段代码?不知何故,所有这些禁用浏览器选择框的技术都不适用于 iOS 模拟器
  • 是的,它是来自 ionic 的项目选择类,它带来了所有问题。
  • @Kingalione 下次请在您的问题中说明您正在使用“离子框架移动应用程序”或任何其他框架,以便每个人都知道这一点。
【解决方案2】:

我猜你的逻辑是错误的,

如果你不想改变选择框中的内容,那么它就不会是一个选择元素,只需使用一个输入并为其分配一个模型,然后改变一些东西,改变它的值。

<input type="text" name="selectedId" ng-model="selectedId" />

其他实现:

如果您想打开选择但无法选择它们, 然后将您的动态数据添加到

var datas = [
{
"value" : "foo",
"id" : "0111",
"selectable": false
},
{
"value" : "foo",
"id" : "0111",
"selectable": true
}
];

然后在选项元素上使用它;

<option ng-repeat="option in item.Options" value="option.id" ng-disabled="true" ng-disabled="item.selectable">{{option.label}}</option>

【讨论】:

    【解决方案3】:

    原来这是一个离子框架项目选择问题。

    我发现这个问题可以解决我的问题: https://github.com/driftyco/ionic/issues/1549

    就像那里建议的那样,我最终在我的选择框中添加了一个类,如下所示:

    .style-disabled {
      pointer-events: none;
    }
    

    我的选择框现在看起来像这样:

    <select class="style-disabled"
            ng-class="nightMode"
            ng-disabled="someCondition"
            ng-options="option as option.label for option in item.Options track by option.id"
            ng-change="item.Call(item.SettingKey,item.Checked.id)"
            ng-model="item.Checked">
    </select>
    

    【讨论】:

      【解决方案4】:

      你不能按照你想要的方式做,但是在之前提出的问题中有一些解决方法,检查它们12

      <div ng-app="myapp">
      <form ng-controller="ctrl">
          <select id="t1" ng-model="curval">
              <option ng-repeat="i in options" value="{{i}}" ng-disabled="disabled[i]">{{i}}</option>
          </select>
          <button ng-click="disabled[curval]=true">disable</button>
      </form>
      

      angular.module('myapp',[]).controller("ctrl", function($scope){
        $scope.options=['test1','test2','test3','test4','test5'];
        $scope.disabled={};
      })
      

      希望对你有帮助,祝你好运

      【讨论】:

      • 我尝试了第二个示例,但它仍然不像我想要的那样。我已经更新了上面的代码
      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      相关资源
      最近更新 更多