javascript - 在两个选择中设置默认值?

标签 javascript html angularjs select angularjs-scope

我的选择有问题。这是代码:

 <select ng-model="car" ng-options="car.name for car in cars track by car.id" class="form-control">
    <option value="">Choose model name</option>
  </select>
  <br />
  <select ng-options="model.name for model in car.models track by model.id" ng-model="model" class="form-control">
    <option value="">Choose car</option>
  </select>

我希望当我访问此页面时,两个选择具有默认值。例如,第一次选择 - “BMW”,第二次选择 - “528I”。我正在尝试执行此解决方案:

<select ng-model="car" ng-init="car.id = 1" ng-options="car.name for car in cars track by car.id" class="form-control">
    <option value="">Choose model name</option>
  </select>
  <br />
  <select ng-init="model.id = 5" ng-options="model.name for model in car.models track by model.id" ng-model="model" class="form-control">
    <option value="">Choose car</option>
  </select>

但它仅适用于第一个选择。 (当我在第一个 select with name with id = 1 中选择名称时,第二个 select 切换到 id = 5 的模型;)

我不知道如何同时在两个选择中重新设置默认值。 你有什么想法吗?

这里是 plunker

最佳答案

你可以只使用 ng-init,像这样:

  <select ng-init="car=cars[0]" ng-model="car" ng-options="car.name for car in cars" class="form-control">
    <option value="">Choose model name</option>
  </select>
  <br />
  <select ng-init="model=car.models[0]" ng-options="model.name for model in car.modelsd" ng-model="model" class="form-control">
    <option value="">Choose car</option>
  </select>

更新

select 的语法有点偏离,实际上您不需要使用 track by 除非您对 select 的值进行分组,而您不是。我认为您真正想要的是将模型绑定(bind)到“汽车”的 id 而不是将模型绑定(bind)到汽车本身。如果那是你想要的,你可以这样做:

  <select ng-init="car=1" ng-model="car" ng-options="car.id as car.name for car in cars" class="form-control">
    <option value="">Choose model name</option>
  </select>

但是为了用汽车模型渲染第二个选择,你将不得不做一些非常尴尬的事情,因为在那种情况下你的变量 car 将是一个 int(汽车的 ID),而不是“汽车”对象,因此您必须执行如下操作:

  <select ng-init="model=5" ng-model="model" ng-options="model.id as model.name for model in ((cars | filter:{id:car})[0].models)" class="form-control">
    <option value="">Choose car</option>
  </select>

这和它看起来一样笨拙,但如果那是你想要的......好吧,这里有一个例子:

Working example

在我看来,一个更好的想法是让模型指向对象,如果你想通过 id 初始化选择,你可以在 ng-初始化 :

  <select ng-init="car=(cars|filter:{id:1})[0]" ng-model="car" ng-options="car.name for car in cars" class="form-control">
    <option value="">Choose model name</option>
  </select>
  <br />
  <select ng-init="model=(car.models|filter:{id:5})[0]" ng-options="model.name for model in car.models" ng-model="model" class="form-control">
    <option value="">Choose car</option>
  </select>

Working Example

关于javascript - 在两个选择中设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025130/

相关文章:

javascript - Cordova 输入类型数字 maxlength 在 android 中不起作用?

php - 使用 hmac 保护 javascript 客户端

javascript - 浏览器页面中选定文本的坐标

javascript - 在 ng-bind 内容之前添加 html 元素

javascript - 切换关闭时 jquery div 不显示

html - 如何让 CSS 背景图像显示在 Word 打开的 HTML 文件中?

javascript - 使用 Protractor 检查浏览器控制台中没有错误

javascript - 如何在 jQuery 函数 text() 中添加新行

Javascript : return XMLHttpRequest out of scope

javascript - 在 JavaScript 中向函数添加函数的最佳实践是什么?