首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在返回拆分数组时在Angular中使用多个"ng-repeat“指令?

如何避免在返回拆分数组时在Angular中使用多个"ng-repeat“指令?
EN

Stack Overflow用户
提问于 2015-09-24 01:38:52
回答 1查看 166关注 0票数 0

我感兴趣的是创建一个具有特定功能的表单。该表单将具有多个条件。当满足条件时,将显示关联的价格。在这种情况下,用户可以选择天数集,然后选择时间集。我遇到了一个障碍,因为我可以按日期范围过滤时间,但这只返回一个数组(“‘4:55 am 5:25’,..)。我需要拆分这个数组,并将其用于一组新的选项值。请参见下面的图像示例。此外,我试图避免在另一个ng-repeat中使用一个ng-repeat,因为这不适用于select表单类型。我尝试使用另一个函数并使用ng-repeat="time in times.times”,但没有任何幸运。

JS:

代码语言:javascript
运行
复制
$scope.times = [
    {'day': 'Monday & Wednesday', 'dates': ['8/10-8/31', '9/2 - 9/30', '10/5- 10-28'], 'times': ['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '46'},
    {'day': 'Tuesday & Thursday', 'dates': ['8/11-8/27'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '39'},
    {'day': 'Tuesday & Thursday', 'dates': ['9/1-9/29', '10/1-10/29'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '59'},
    {'day': 'Saturday', 'dates': ['9/12 - 11/21 No Class Oct 31'], 'times':['11:00am - 11:30am', '11:35am-12:00pm'], 'price': '65'}
]; 

$scope.concat = function()
{
    var concat = [];
    var fullDates = []
    for (var z = 0; z<= top.length - 1; z ++)
    {
        var dates = top[z].dates;
        var day = top[z].day; 

        //return dates;

        for(var i = 0; i<=dates.length - 1; i++)
         {
            //concat.push(day.dates[i]);
            concat.push(day + ' ' + dates[i]);
            fullDates.push(dates[i])            
         }
        $scope.fullDates = fullDates;

    }
    return concat; 
};

HTML:

代码语言:javascript
运行
复制
<select name="days" id="#preschool" ng-model="selectedgroup">
        <option ng-repeat="days in concat() track by $index" value="{{fullDates[$index]}}">
        {{days}}
        </option>
    </select>
    Select A Time:
    <select name="times" id="times" ng-model="selectedTime">
    <option ng-repeat="time in times| filter: {dates: selectedgroup}" value="{{$index}}">
        {{time.times}}
    </option>
    </select>
EN

回答 1

Stack Overflow用户

发布于 2015-09-24 22:40:09

我发现,您还可以通过传入一个带有索引属性值的对象,将键添加到您正在创建的新对象中(使用concat函数)。这样,您就不必担心重写JSON数据。然后,您可以使用这个带有日期的新索引来选择特定对象。

HTML:

代码语言:javascript
运行
复制
<select name="days" id="#preschool" ng-model="selectedgroup">
        <option ng-repeat="days in concat() track by $index" value="{{days.index}}">
        {{days.day}}
        </option>
    </select>
    Select A Time:
    <select name="times2">
        <option value="" ng-repeat="time in times[selectedgroup].times">
            {{time}}
        </option>

JS:

代码语言:javascript
运行
复制
$scope.concat = function()
{
    var concat = [];
    var fullDates = []
    for (var z = 0; z<= top.length - 1; z ++)
    {
        var dates = top[z].dates;
        var day = top[z].day; 
        //return dates;
        for(var i = 0; i<=dates.length - 1; i++)
         {
            concat.push({'day': day + ' ' + dates[i] , 'index':z}); 
         } 
    }
    return concat; 
};
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32746031

复制
相关文章

相似问题

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