选择输入更改不会影响模型状态

时间:2013-10-25 19:28:12

标签: javascript html angularjs select

А声明3个选择输入,并选择分层数据:

<select data-ng-model="current.manufacturer" data-ng-options="c.name for c in manufactures"></select>
<select data-ng-model="current.mark" data-ng-options="c.name for c in current.manufacturer.marks" data-ng-disabled="!current.manufacturer"></select>
<select data-ng-model="current.material" data-ng-options="c for c in current.mark.materials" data-ng-disabled="!current.mark"></select>

和数据模型如:

[{ name: "manufacturer_name", 
        marks: [{ name: "mark_name", 
               materials: ["material", ..] }, ...]}, ...]

当我选择第一个输入值时,它会启用第二个输入值;在第二次选择之后可以选择第三个选项。但是,如果我更改第一个选项,则第二个输入会重置其值,但它不会影响模型值,并且第三个元素不会被禁用。可以看到问题here

如何在第二个输入的选择发生变化时更改current.mark的值?

1 个答案:

答案 0 :(得分:1)

更改mark后,

materialmanufacturer未重置。我继续向示波器添加一些监视,以便在发生变化时隐式设置模型值。

$scope.$watch('current.manufacturer', function (newValue, oldValue) {
    if (newValue !== oldValue) {
        $scope.current.mark = null;
        $scope.current.material = null;
    }
});

$scope.$watch('current.mark', function (newValue, oldValue) {
    if (newValue !== oldValue) {
        $scope.current.material = null;
    }
});

似乎得到你想要的东西。

Fiddle

也许其他人可以用更简单的方式解决它。