ng-更改第一个下拉菜单而不是设置Angular with Kendo中第二个下拉列表的默认选择值

时间:2015-01-07 20:19:05

标签: angularjs kendo-ui

我正在使用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值。 ?

1 个答案:

答案 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>