我正在使用Angular和剑道。
我有2次下降。一个用于设备类型(Type1,Type2和Type3),第二个用于功率等级(范围从-10到+10)。加载页面时,我们将Device Type = Type1和Power Level -5设置为默认值。所有设备类型的功率级别范围相同。但是当我们改变设备类型时,我们将功率级下拉设置重新设置为-5及其相关的其他控件。
当加载页面时,我们从服务器端传递默认的Power Level值。
问题是当我更改设备类型DD时,功率级DD未设置为-5。它始终选择-10(第一项)作为默认值。
如果我使用$ scope。$ watch,我注意到默认值从-5更改为-10默认值,我没有在任何地方更改。
以下是我的PowerLevel下拉设置的代码段
<select kendo-drop-down-list
k-data-text-field="'Value1'"
k-data-value-field="'PowerLevelID'"
k-data-source="Model.PowerLevelList"
ng-model="Model.SelectedPowerLevelID"
id="powerLevel" ></select>
Model.SelectedPowerLevelID
- 默认功率等级值为-5。当我更改设备类型DD时,该值变为-10(第一项)。
Model.PowerLevelList
- 功率等级值列表。
问题是每当我更改设备类型时如何维护Model.SelectedPowerLevelID值。 ?
答案 0 :(得分:2)
这是解决方案..
我已将ng-options和k-on-change添加到功率电平下拉,如下所示。 OnPowerLevelChange()方法有助于保持所选的功率值 OnDeviceTypeChange()方法有助于保持默认值(-20)。
<select kendo-drop-down-list
k-data-text-field="'Value1'"
k-data-value-field="'PowerLevelID'"
k-data-source="Model.PowerLevelList"
ng-model="SelectedPowerLevelID"
id="powerLevel"
ng-options="c.Value1 for c in Model.PowerLevelList"
ng-disabled="PageActionMode == PageActionMethods.READONLY"
k-on-change="OnPowerLevelChange()"></select>
<script >
// On change of Device Type
$scope.OnDeviceTypeChange = function () {
if ($scope.$parent.viewModel.DeviceGenInfoModel.TypeID == 0) {
$scope.Model = $scope.$parent.viewModel;
// Keep Default value(-20dbm) in scope temp value , So that we can set PowerLevelID default value(-20dbm) always until any change in power level
$scope.SelectedPowerLevelID = $scope.$parent.viewModel.PowerLevelID;
}
else if ($scope.$parent.viewModel.DeviceGenInfoModel.TypeID == 1) {
$scope.Model = $scope.$parent.viewModel;
// Keep Default value(-20dbm) in scope temp value , So that we can set PowerLevelID default value(-20dbm) always until any change in power level
$scope.SelectedPowerLevelID = $scope.$parent.viewModel.PowerLevelID;
}
}
// On change of Power Level
$scope.OnPowerLevelChange = function () {
var powerLevelDropDown = $("#powerLevel").data("kendoDropDownList");
// Since we use Angular with Kendo drop down , we need to set the selected/changed powerlevel using kendo drop down object.
if ($scope.$parent.viewModel.DeviceGenInfoModel.TypeID == 0) {
$scope.$parent.viewModel.PowerLevelID = powerLevelDropDown.value();
}
else if ($scope.$parent.viewModel.DeviceGenInfoModel.TypeID == 1) {
$scope.$parent.viewModel.PowerLevelID = powerLevelDropDown.value();
}
};
</script>