Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将事件onClick添加到下拉列表的最后一个元素_Angularjs_Dropdownbox - Fatal编程技术网

Angularjs 将事件onClick添加到下拉列表的最后一个元素

Angularjs 将事件onClick添加到下拉列表的最后一个元素,angularjs,dropdownbox,Angularjs,Dropdownbox,假设我有一个下拉列表,我想在列表的最后一个元素中添加一个onClick事件,例如: 伦敦 巴黎 米兰 添加新城市+ ng change指令仅在下拉列表中有多个元素时对我有帮助,否则如果我有这样的列表(只有一个元素): 添加新城市+ 我永远无法将onClick事件设置为唯一项,因为它永远不会更改组合框的值 更新 <select ng-model="customer.selectedCity" ng-options="opt as opt.name for opt in custom

假设我有一个下拉列表,我想在列表的最后一个元素中添加一个onClick事件,例如:

  • 伦敦
  • 巴黎
  • 米兰
  • 添加新城市+
ng change指令仅在下拉列表中有多个元素时对我有帮助,否则如果我有这样的列表(只有一个元素):

  • 添加新城市+
我永远无法将onClick事件设置为唯一项,因为它永远不会更改组合框的值

更新

<select ng-model="customer.selectedCity"  ng-options="opt as opt.name for opt in customer.cityOptions"
  ng-init="model="customer.selectedCity"   = customer.cityOptions[0]"
  ng-change="onCustomerCitySelected(customer)" ></select>

您可以尝试添加默认值,如下所示:

<select ng-model="model2" ng-options="item for item in items2" ng-change="processItemChange(model2)">
      <option value="">Select Value From Items2</option>
</select>

从Items2中选择值
因此,现在您可以添加
ng change
函数来定义新值是否为
addnewvalue


演示:您可以尝试添加默认值,如下所示:

<select ng-model="model2" ng-options="item for item in items2" ng-change="processItemChange(model2)">
      <option value="">Select Value From Items2</option>
</select>

从Items2中选择值
因此,现在您可以添加
ng change
函数来定义新值是否为
addnewvalue


演示:完全不用
ng change
就可以实现这一点。考虑以下事项:

HTML模板

<select ng-model="selectedIndex"
        ng-options="index as name for (index, name) in menu"> 
</select> 
<div class="btn-group" dropdown>
  <button type="button" 
          class="btn btn-primary">{{ vm.selectedCity || 'Not selected' }}
  </button>
  <button type="button" 
          class="btn btn-primary dropdown-toggle" 
          dropdown-toggle>
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li ng-repeat="item in vm.menu">
      <a ng-if="!$last" href="#" 
         ng-bind="item"
         ng-click="vm.selectedCity = item"></a> 
      <a ng-if="$last" href="#" 
         ng-bind="item"
         ng-click="vm.addNewCity()"></a>
    </li>
  </ul>
</div>
您还可以考虑使用
ui引导
下拉列表

HTML模板

<select ng-model="selectedIndex"
        ng-options="index as name for (index, name) in menu"> 
</select> 
<div class="btn-group" dropdown>
  <button type="button" 
          class="btn btn-primary">{{ vm.selectedCity || 'Not selected' }}
  </button>
  <button type="button" 
          class="btn btn-primary dropdown-toggle" 
          dropdown-toggle>
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li ng-repeat="item in vm.menu">
      <a ng-if="!$last" href="#" 
         ng-bind="item"
         ng-click="vm.selectedCity = item"></a> 
      <a ng-if="$last" href="#" 
         ng-bind="item"
         ng-click="vm.addNewCity()"></a>
    </li>
  </ul>
</div>
上面的例子会产生类似的结果


与此处的所有代码相关的Plunk

您完全无需使用
ng change
即可实现此功能。考虑以下事项:

HTML模板

<select ng-model="selectedIndex"
        ng-options="index as name for (index, name) in menu"> 
</select> 
<div class="btn-group" dropdown>
  <button type="button" 
          class="btn btn-primary">{{ vm.selectedCity || 'Not selected' }}
  </button>
  <button type="button" 
          class="btn btn-primary dropdown-toggle" 
          dropdown-toggle>
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li ng-repeat="item in vm.menu">
      <a ng-if="!$last" href="#" 
         ng-bind="item"
         ng-click="vm.selectedCity = item"></a> 
      <a ng-if="$last" href="#" 
         ng-bind="item"
         ng-click="vm.addNewCity()"></a>
    </li>
  </ul>
</div>
您还可以考虑使用
ui引导
下拉列表

HTML模板

<select ng-model="selectedIndex"
        ng-options="index as name for (index, name) in menu"> 
</select> 
<div class="btn-group" dropdown>
  <button type="button" 
          class="btn btn-primary">{{ vm.selectedCity || 'Not selected' }}
  </button>
  <button type="button" 
          class="btn btn-primary dropdown-toggle" 
          dropdown-toggle>
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li ng-repeat="item in vm.menu">
      <a ng-if="!$last" href="#" 
         ng-bind="item"
         ng-click="vm.selectedCity = item"></a> 
      <a ng-if="$last" href="#" 
         ng-bind="item"
         ng-click="vm.addNewCity()"></a>
    </li>
  </ul>
</div>
上面的例子会产生类似的结果


这里有所有代码的相关plunker

Hi@ababashka,非常感谢您的评论。我给了你+1,我想了一些类似的东西,可以解决我的问题,但是我的列表中不能有这些默认值,而且隐藏它们不是一个选项,因为它只会在你第一次更改组合值时起作用。@unpix:你到底想看到什么?你能提供一些开始代码,我可以从中给出一些建议吗?谢谢。基本上,我希望列表的最后一项有一个onclick事件,就像示例中一样。我用我的观点更新了代码,我需要以某种方式更改ng change指令以获得我想要实现的目标。否则,如果列表中只有1个元素,“AddNewCity+”的值不会改变。再次感谢@ababashka,非常感谢您的评论。我给了你+1,我想了一些类似的东西,可以解决我的问题,但是我的列表中不能有这些默认值,而且隐藏它们不是一个选项,因为它只会在你第一次更改组合值时起作用。@unpix:你到底想看到什么?你能提供一些开始代码,我可以从中给出一些建议吗?谢谢。基本上,我希望列表的最后一项有一个onclick事件,就像示例中一样。我用我的观点更新了代码,我需要以某种方式更改ng change指令以获得我想要实现的目标。否则,如果列表中只有1个元素,“AddNewCity+”的值不会改变。再次感谢你的时间,这帮助我实现了我想要的。感谢你的时间,这帮助我实现了我想要的。