javascript - 使用 AngularJS 选择多个显示名称而不是 ID

标签 javascript angularjs cakephp angularjs-scope angularjs-ng-repeat

我有一个像这样的多重选择:

<select ng-model="listProds" multiple>
  <option value="10">product 1</option>
  <option value="25">product 2</option>
  <option value="35">product 3</option>
  <option value="48">product 4</option>
</select>

这些值是这些产品的 ID(此选择框是使用 PHP 生成的)

&我的 app.js 文件中有这个简单的代码:

var app = angular.module('myapp', []);
app.controller("PurchasesController", function($scope) {

    // Init products Array
    $scope.listProds = [];

});

当我像这样 {{ listProds }} 显示 listProds 时,我会得到一个包含当前所选项目的数组,但如果我选择所有项目,它只会显示这样的 Id [“10”,“25”,“35”,“48”]

<fieldset ng-show="listProds.length > 0">
    <div data-ng-repeat="p in listProds track by $index">
        {{ p }} <!– Or –> {{ listProds[$index] }}
        <input type="text" name="pr{{ listProds[$index] }}" />
        <input type="text" name="qt{{ listProds[$index] }}" />
    </div>
</fieldset>

此代码生成两个文本框,用于输入从选择框中选择的每个产品的价格和数量。因此,我不想使用 {{ p }}{{ listProds[$index] }} 并显示产品 ID,而是想在那里显示产品名称。

提前谢谢您。

最佳答案

您可以创建两个列表:一个列表用于您的所有产品,另一个列表用于选定的产品:

$scope.listProds = [
  { key: 10, value: 'Product 1' },
  { key: 25, value: 'Product 2' },
  { key: 35, value: 'Product 3' },
  { key: 45, value: 'Product 4' }
];

$scope.selectedProds = [];

现在,在标记中,您可以使用 ng-options 来生成选项,而不用手动写出选择中的每个选项。使用这种方法,您基本上是在说每个选项都是一个对象,并且您希望使用对象value 作为显示名称。

 <select ng-model="selectedProds" ng-options="prod.value for prod in listProds" multiple>

现在您的 $scope.selectedProds 数组将包含产品对象,而不仅仅是它们的键。现在您可以轻松显示名称了:

<fieldset ng-show="selectedProds.length > 0">
  <div data-ng-repeat="p in selectedProds track by $index">
    {{ p.value }}
    <input type="text" name="pr{{ selectedProds[$index] }}" />
    <input type="text" name="qt{{ selectedProds[$index] }}" />
  </div>
</fieldset>

不确定您想要输入的名称属性是什么,但我希望您明白。

关于javascript - 使用 AngularJS 选择多个显示名称而不是 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320405/

相关文章:

php - CakePHP 中的库存计数

javascript - IE 扭曲幻灯片 "BACK"和 "FORWARD"导航

javascript - 当表单/窗口加载时,如何调用函数以使用 Angular Bootstrap 显示第一个选项卡的动态内容

javascript - 如何使用所有ajax请求自动显示事件加载器?

javascript - 如何制作一个 MobX 支持的表单并立即传播更改?

javascript - 添加 anchor 到 AngularJS State

angularjs - 如何创建指令以禁用 div 元素中的所有元素

javascript - 使用选项卡导航时 Chrome Windows 中的 Angular ng-select 错误

mysql - CakePHP 2 无法连接到 MySQL 数据库

Cakephp 2.0 分页问题。如何在分页链接中传递参数?