首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角-如何使一个选项字段(带有ng-重复)取决于先前在选项字段中选择的值?

角-如何使一个选项字段(带有ng-重复)取决于先前在选项字段中选择的值?
EN

Stack Overflow用户
提问于 2017-05-24 17:22:18
回答 1查看 100关注 0票数 0

我有三个领域。第一个选项字段/ng-重复可用日期第二选项字段/基于用户选择的日期,我做ng-重复超过数量。我尝试过各种不同的方法,但我不能让它依赖于第一个选项字段,或者其他东西不能工作。任何帮助都会很好!谢谢!!

html:

代码语言:javascript
运行
复制
<div class="containerDiv">
        <div>
            <select ng-model='date'>
                <option ng-repeat="availableDateProduct in product " value='{{i}}'>{{availableDateProduct.dateOfActivity}}
                </option>
            </select>
        </div>

        <div ng-repeat="availableDateProduct in product ">
            <select>
                <option ng-repeat='i in quantityLister(availableDateProduct.quantity)' value='{{i}}'>
                    {{i}}
                </option>
            </select>
        </div>
        <div>
            <button>Book</button>
        </div>
    </div>

联署材料:

代码语言:javascript
运行
复制
    app.controller('ProductCtrl', function($scope, ProductsFactory, $stateParams) {

        ProductsFactory.fetchByTitle($stateParams.title)
            .then(function(product) {
                $scope.product = product;
            })
        $scope.quantityLister = function(num) {
            var array = [];
            for (var i = 1; i <= num; i++) {
                array.push(i)
            }
            return array;
        }
    })

数据:

代码语言:javascript
运行
复制
var products = [
  {
    title:'Bowling',
    description:'Its fun!',
    photoUrl:'https://www.1.jpg',
    quantity:12,
    price:9,
    dateOfActivity: '2017-13-07'
  },
...
]

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-28 14:12:31

ng-options有专门为完成这一任务而构建的指令;

首先,我们在控制器中定义了一个对象,它将保存从下拉列表中选择的值:

代码语言:javascript
运行
复制
$scope.reservation = {};

接下来,我们在下拉列表中使用ng选项,并使用ng-model属性接受所选的值。在第一个下拉列表中,我们接受products数组,显示每个产品的dateOfActivity,并在选择时将product对象保存到ng-model。(在ng-options定义中从右到左工作)。

代码语言:javascript
运行
复制
ng-model="reservation.selectedProduct"  
ng-options="product as product.dateOfActivity for product in products"

在我们的第二个下拉列表中,您定义了一个函数来获取一个数字并将其扩展到一个数组中。我们从reservation.selectedProduct.quantity调用这个函数,然后使用这个数组作为ng-options的基础

代码语言:javascript
运行
复制
ng-model="reservation.selectedQuantity" 
ng-options="num for num in quantityLister(reservation.selectedProduct.quantity)"

现在我们有一个对象,它为两个下拉列表都选择了值,我们只需要在按下按钮时改变原始数组中的数量。我们还想清除选择的后置,以确保用户不可能意外地作出重复预订。

代码语言:javascript
运行
复制
$scope.reserve = function (){
  $scope.reservation.selectedProduct.quantity -= $scope.reservation.selectedQuantity;
  $scope.reservation = {};
};

在这里,我们使用简写-=selectedProduct.quantity中减去selectedQuantity。由于selectedProduct是双向绑定的,所以对selectedProduct的更改也反映在product数组中的原始对象中。但是,quantityLister函数不是动态的;如果我们不重置$scope.reservation,那么第二个下拉列表将保存一个现在无效的可用预订数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44164955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档