Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 具有多个模型的下拉列表_Angularjs - Fatal编程技术网

Angularjs 具有多个模型的下拉列表

Angularjs 具有多个模型的下拉列表,angularjs,Angularjs,我不知道如何在基于多个模型属性的下拉列表中选择适当的值。我试图实现一个包含3个选项的下拉列表:出席、缺席、化妆 关键是,“缺席”属性存储一个人是否缺席(true/false),而“补课”属性存储该人是否补课(即用户正在补课,因此他缺席:false和补课:true) users : { 1 : { absent: true makeup: false }, 2 : { absent: false makeup: true } } 然后是包含以下选项

我不知道如何在基于多个模型属性的下拉列表中选择适当的值。我试图实现一个包含3个选项的下拉列表:
出席、缺席、化妆

关键是,“缺席”属性存储一个人是否缺席(
true/false
),而“补课”属性存储该人是否补课(即用户正在补课,因此他缺席:false和
补课:true

users : {
  1 : {
    absent: true
    makeup: false
  },
  2 : {
    absent: false
    makeup: true
  }
}
然后是包含以下选项的下拉列表:

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

// 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>
//此处显示的是完整的选项,而不是用于演示目的的ng选项
目前
缺席的
化妆品
这真让我受不了!感谢您的帮助

谢谢

编辑:


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

<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;
    }
};
<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.ChangeAttention=函数(UserAttention){
如果(userAttention.status==‘化妆’){
userAttention.化妆=真;
userAttention.缺席=假;
}否则{
UserAttention.缺席=UserAttention.status;
userAttention.化妆=假;
}
};

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

<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;
    }
};
<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>

两者都是真的还是都是假的?我看不出两种情况都是真的。如果用户在场并且正在化妆,缺席=假,化妆=真。如果用户缺席,用户不能化妆,所以缺席=真,化妆=假。但是,如果用户在场但没有化妆,两者都可能是假的…缺席=假,化妆=假。那么你为什么要这样做ve 3选项-2应该足够了,否?否,因为数据库在一列中存储缺席/出席,以及它是否是另一列中的补足。这样很容易看到#出席用户和#补足用户。因此,当选择“补足”时,它将补足属性设置为true,以及present=true(缺席=false)。这很好,但为什么您有3个下拉选项?妆容总是会出现而不是出现(反之亦然)。