首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多模型下拉

多模型下拉
EN

Stack Overflow用户
提问于 2014-10-24 21:36:24
回答 1查看 866关注 0票数 2

我很难弄清楚如何根据多个模型属性在下拉列表中选择适当的值。我正试图用三个选项实现一个下拉列表:Present, Absent, Make-up

关键是,缺失属性存储一个人是否缺席(true/false),而化妆属性存储是否是一个化妆(IE是一个用户组成一个类,所以他是absent: falsemakeup: true。例如,假设我有以下模型:

代码语言:javascript
复制
users : {
  1 : {
    absent: true
    makeup: false
  },
  2 : {
    absent: false
    makeup: true
  }
}

然后是带有以下选项的下拉列表:

代码语言:javascript
复制
options : {
   false : 'Present'
   true : 'Absent'
   'makeup' : 'Make-Up'
}

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

代码语言:javascript
复制
// 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>

这简直把我逼疯了!任何帮助都是非常感谢的!

谢谢!

编辑:

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

代码语言:javascript
复制
<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>

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

回答 1

Stack Overflow用户

发布于 2014-10-24 23:04:09

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

代码语言:javascript
复制
<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>

主计长:

代码语言:javascript
复制
$scope.changeAttendance = function(userAttendance) {
    if (userAttendance.status == 'makeup') {
       userAttendance.makeup = true;
       userAttendance.absent = false;
    } else {
       userAttendance.absent = userAttendance.status;
       userAttendance.makeup = false;
    }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26556652

复制
相关文章

相似问题

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