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

Javascript 选择输入更改不影响模型状态,javascript,html,angularjs,select,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

А宣布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>
当我选择第一个输入值时,它使第二个启用;第二次选择后,可以选择第三个选项。但如果我更改第一个选项,第二个输入将重置其值,但它不会影响模型值,第三个元素也不会被禁用。问题显而易见


如何使
的值为当前值。当第二个输入的选择发生变化时,标记将发生变化?

标记将发生变化,并且当您改变
制造商时,
材料将不会被重置。我继续向作用域添加了一些手表,以便在发生变化时可以隐式地设置模型值

$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;
    }
});
似乎得到了你想要的


也许其他人可以用一种更简单的方法来解决这个问题。

当您更改
制造商时,
标记和
材料
不会被重置。我继续向作用域添加了一些手表,以便在发生变化时可以隐式地设置模型值

$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;
    }
});
似乎得到了你想要的


也许其他人可以用一种更简单的方法来解决这个问题。

你永远不会清除
current.material
current.mark
。当您更改第一个选项时,它实际上不会清除该值(您仍然可以在底部看到该值),但由于您正在选择一个对象,“选择”框将清除。例如,如果选择“derp,1,a”,然后切换到“herp”,则标记保持为“1”,材质保持为“a”。由于中间选择的新选项中不存在“1”,因此它为空。但是,由于标记仍然是“1”,第三个选项具有相同的选项,“a”仍然是有效选项。@JasonGoemaat,在将标记和材料的数据更改为相同后,第二个值将消失,因为您永远不会清除
current.material
current.mark
。当您更改第一个选项时,它实际上不会清除该值(您仍然可以在底部看到该值),但由于您正在选择一个对象,“选择”框将清除。例如,如果选择“derp,1,a”,然后切换到“herp”,则标记保持为“1”,材质保持为“a”。由于中间选择的新选项中不存在“1”,因此它为空。但由于标记仍然是“1”,第三个选项具有相同的选项,“a”仍然是有效选项。@JasonGoemaat,在将标记和材料的数据更改为相同后,第二个值desappeares可能不是最简单的,而是100%有效的答案,谢谢!也许这不是最简单的,但100%的工作答案,谢谢!