下拉多种型号

时间:2014-10-24 21:36:24

标签: angularjs

我无法确定如何根据多个模型属性在下拉列表中选择适当的值。我试图通过3个选项实现下拉列表:Present, Absent, Make-up

问题是,缺席属性存储一个人是否缺席(true/false),化妆属性存储它是否是一个化妆(IE用户正在组成一个类,所以他是{ {1}}和absent: false。例如,假设我有以下模型:

makeup: true

然后使用以下选项下拉列表:

users : {
  1 : {
    absent: true
    makeup: false
  },
  2 : {
    absent: false
    makeup: true
  }
}

我知道如何根据选择,通过ng-change将正确的值绑定到模型。但是,我在下拉列表中显示初始值时遇到问题,因为该值取决于多个模型属性:

options : {
   false : 'Present'
   true : 'Absent'
   'makeup' : 'Make-Up'
}

这让我起了个墙!任何帮助表示赞赏!

谢谢!

修改

这是我能想到的最佳解决方案。这有点难看,但是如果有人的话,我仍在寻找更合适的解决方案。

// options shown in full instead of ng-options for demo purposes here
<select ng-model="user.absent">
    <option value="false">Present</option>
    <option value="true">Absent</option>
    <option value="makeup">Make-up</option>
</select>

1 个答案:

答案 0 :(得分:1)

这是我能想到的最佳解决方案。这有点难看,但如果有人有,我还在寻找更合适的解决方案。

<select ng-model="userAttendance.status" ng-change="changeAttendance(userAttendance)">
     <option value="false" ng-selected="userAttendance.makeup == false && userAttendance.absent == false">Present</option>
     <option value="true" ng-selected="userAttendance.absent == true">Absent</option>
     <option value="makeup" ng-selected="userAttendance.makeup == true && userAttendance.absent == false">Make-up</option>
</select>

控制器:

$scope.changeAttendance = function(userAttendance) {
    if (userAttendance.status == 'makeup') {
       userAttendance.makeup = true;
       userAttendance.absent = false;
    } else {
       userAttendance.absent = userAttendance.status;
       userAttendance.makeup = false;
    }
};