3

在我的应用程序中,我有一些分组的选择元素,它们都有相同的选项。当一个选择被更改时,它会检查其他选择以查看新选择的选项是否已经在任何其他选择中被选择。如果它已被选中,则有一些逻辑可以动态选择尚未在其他选择中选择的选项。有时,此逻辑会导致选择与以前相同的选项。发生这种情况时,我的选择元素不会更新,并且与我的模型不同步。

我创建了一个非常简单的 jsFiddle,在这里显示:http: //jsfiddle.net/wvLHw/

注释掉了我发现的一种可能的解决方法,但我不知道在我的应用程序中这样做的可能性有多大。有没有更好的方法来让它正常工作?angular 没有根据我的模型更新选择元素有什么原因吗?

4

2 回答 2

1

这是1.0.2版本的 angularjs 问题,已在1.0.3中修复。

这现在应该适合你

$scope.myOnChange = function() {
    //more logic here, but ends up back at c
    $scope.foo = "c";
}
于 2013-03-15T22:42:26.100 回答
0

我不确定我是否正确解释了您的问题,但我假设您有多个选择,并且当其中一个选择中的值发生更改时,您想要执行一些逻辑(基于其他选择的值)最终将计算要设置的最终值。

如果以上内容正确,则使用 $scope.$watch 将涵盖您的用例。为了举例,假设我有 2 个选择绑定到 2 个不同的模型值(foo 和 bar)。如果有人更改了 foo 的值并且它等于为 bar 选择的值,那么您希望强制 foo 成为其他值。在这种情况下,这段代码可以解决问题:

$scope.$watch('foo', function(fooValue){
    if (fooValue === $scope.bar){
        $scope.foo = 'a';
    }
});

这是完整的 jsFiddle:http: //jsfiddle.net/pkozlowski_opensource/vqjKq/3/

我希望我正确地解释了您的用例,但如果没有,请对此答案发表评论,我很乐意提供更新。

于 2012-09-06T17:29:15.587 回答