Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Javascript 如何根据其他值在选择上显示特定值?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何根据其他值在选择上显示特定值?

Javascript 如何根据其他值在选择上显示特定值?,javascript,angularjs,Javascript,Angularjs,我在AngularJS上有一个select,其中显示了从API获得的状态。这些状态是合同的可能状态 我还从API中获得了每个合同的实际状态的合同。我希望根据我从API获得的状态,只显示特定的值 例如,如果我从API中获取Accept值,我希望select上只显示Accept和No Accept选项。与进行中和取消进行中选项的情况相同 为了解决这个问题,我举了一个简单的例子: 函数状态控制器($scope){ $scope.contracts=[{ 合同:“1”, 实际状态:“不接受” }, {

我在AngularJS上有一个select,其中显示了从API获得的状态。这些状态是合同的可能状态

我还从API中获得了每个合同的实际状态的合同。我希望根据我从API获得的状态,只显示特定的值

例如,如果我从API中获取
Accept
值,我希望
select
上只显示
Accept
No Accept
选项。与
进行中
取消进行中
选项的情况相同

为了解决这个问题,我举了一个简单的例子:

函数状态控制器($scope){
$scope.contracts=[{
合同:“1”,
实际状态:“不接受”
}, {
合同:“2”,
实际状态:“正在进行”
}, {
合同:“3”,
实际状态:“接受”
}];
$scope.states=[{
StateName:“接受”
}, {
StateName:“不接受”
}, {
StateName:“正在进行中”,
}, {
StateName:“取消进度”
}];
}
表,th,td{
边框:1px纯灰;
}

{{contract.IdContract}
{{contract.ActualState}
{{state.StateName}

如果我理解正确,您需要根据$scope.selected更改states的值

我认为最好的方法是创建一个API,其中包含所选状态的可能状态,并使用它来填充所选状态

乙二醇


如果我理解正确,您需要根据$scope.selected更改状态的值

我认为最好的方法是创建一个API,其中包含所选状态的可能状态,并使用它来填充所选状态

乙二醇


如果您不能更改API,那么您别无选择,只有在您的一侧有一个对应表,侦听$scope.selected上的更改并过滤数组

在实际状态下,如果状态名称不变,则可以在StateName.indexOf(“接受”)或StateName.indexOf(“进度”)上筛选数组

编辑:

在不修改模型的情况下(例如,通过添加stateType属性),我看到的唯一解决方案是使用一个按状态类型选择的元素(harcoded)

如果合同类型为“进度”,则显示过滤后的选择元素。 如果合同类型为“接受”,则显示过滤后的选择元素

函数状态控制器($scope){
$scope.contracts=[{
合同:“1”,
实际状态:“不接受”
}, {
合同:“2”,
实际状态:“正在进行”
}, {
合同:“3”,
实际状态:“接受”
}];
$scope.states=[{
StateName:“接受”
}, {
StateName:“不接受”
}, {
StateName:“正在进行中”,
}, {
StateName:“取消进度”
}];
$scope.stateType=函数(类型){
返回$scope.states.filter(函数(状态){
返回~state.StateName.toLowerCase().indexOf(类型);
});
}
$scope.isType=功能(合同,类型){
return~contract.ActualState.toLowerCase().indexOf(type);
}
}
表,th,td{
边框:1px纯灰;
}
挑选{
宽度:100%;
}

{{contract.IdContract}
{{contract.ActualState}
{{state.StateName}
{{state.StateName}

如果您无法更改API,那么您别无选择,只能在您身边有一个对应表,侦听$scope.selected上的更改并过滤数组

在实际状态下,如果状态名称不变,则可以在StateName.indexOf(“接受”)或StateName.indexOf(“进度”)上筛选数组

编辑:

在不修改模型的情况下(例如,通过添加stateType属性),我看到的唯一解决方案是使用一个按状态类型选择的元素(harcoded)

如果合同类型为“进度”,则显示过滤后的选择元素。 如果合同类型为“接受”,则显示过滤后的选择元素

函数状态控制器($scope){
$scope.contracts=[{
合同:“1”,
实际状态:“不接受”
}, {
合同:“2”,
实际状态:“正在进行”
}, {
合同:“3”,
实际状态:“接受”
}];
$scope.states=[{
StateName:“接受”
}, {
StateName:“不接受”
}, {
StateName:“正在进行中”,
}, {
StateName:“取消进度”
}];
$scope.stateType=函数(类型){
返回$scope.states.filter(函数(状态){
返回~state.StateName.toLowerCase().indexOf(类型);
});
}
$scope.isType=功能(合同,类型){
return~contract.ActualState.toLowerCase().indexOf(type);
}
}
表,th,td{
边框:1px纯灰;
}
挑选{
宽度:100%;
}

{{contract.IdContract}
{{contract.ActualState}
{{state.StateName}
{{state.StateName}

很抱歉,我忘了提及我无法修改的客户端API,但是的,这就是我的想法。我想知道我是否可以在SelectUsingAngularJS上这样做。在AngularJS上创建一个服务文件,并定义给定状态的所需状态,然后使用此方法而不是整个列表。我已经修改了一点我的问题,以使其更接近我的实际情况。问题是,我不知道如何为表中的每一行创建一个引用合同的条件。很抱歉,我忘了提到,这是一个客户端API,我无法
string[] getStates(int stateId)