2015-09-27 26 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