2015-09-27 24 views
0

我想根据在下拉列表中选择哪个项目来显示列表。基于下拉条件的条件ng重复

当我使用下面的代码,我得到这个错误: TypeError: Cannot read property 'type' of undefined

如何做到这一点的权利有什么建议?

HTML:

<select class="form-control" ng-model="editProject.project.type" 
ng-options="project as project.type for project in editProject.options track by project.type"> 
</select> 

<ul class="list-group"> 
    <li class="list-group-item" ng-repeat="benefit in editProject.foods()">{{snack}}</li> 
</ul> 

控制器:

.controller('EditProjectCtrl', function() { 

    var editProject = this; 

editProject.options = [ 
    {'type': 'Fruits'}, 
    {'type': 'Vegetables'}, 
    {'type': 'Desserts'} 
]; 

editProject.snacks = function() { 

    if(editProject.project.type == 'Fruits') {return [ 
    'Grapes', 
    'Oranges', 
    'Apples', 
    ]} 

    if(editProject.project.type == 'Vegetables') {return [ 
    'Broccoli', 
    'Spinache', 
    'Kale', 
    ]} 

    else {return [ 
    'Cookies', 
    'Cake', 
    'Pie']} 
}; 
+0

选择列表的“ng-model”被设置为“editProject.project.type”,但是在你正在阅读的控制器中itProject.projects.type'(注意's')。 –

回答

1

你几乎没有。选择元素的ng-model与控制器中的条件不匹配。我也取代benefit in editProject.foods()snack in editProject.snacks()

<select class="form-control" ng-model="editProject.project" ng-options="project as project.type for project in editProject.options track by project.type"></select> 
<ul class="list-group"> 
    <li class="list-group-item" ng-repeat="snack in editProject.snacks()">{{snack}}</li> 
</ul> 

因为editProject.project没有定义,直到选中项目,你在控制器初始化:

editProject.project = {}; 

fiddle