0

http://jsfiddle.net/WcJbu/

当我选择一个人时,我希望 favoriteThing 选择器显示他们当前的选择。

    <div ng-controller='MyController'>
        <select ng-model='data.selectedPerson' ng-options='person.name for person in data.people'></select>

        <span ...> likes </span>

        <select ... ng-model='data.favoriteThing' ng-options='thing.name for thing in data.things'></select>
    </div>

$scope.data.people = [{
    name: 'Tom',
    id: 1,
    favorite_thing_id: 1
}, {
    name: 'Jill',
    id: 2,
    favorite_thing_id: 3
}];

$scope.data.things = [{
    name: 'Snails',
    id: 1
}, {
    name: 'Puppies',
    id: 2
}, {
    name: 'Flowers',
    id: 3
}];

我需要设置服务并添加手表,还是有[好]方法可以直接在选择中使用喜爱的东西ID?

4

2 回答 2

1

将第二个选择更改为:

<select ng-show='data.selectedPerson' ng-model='data.selectedPerson.favorite_thing_id' 
        ng-options='thing.id as thing.name for thing in data.things'></select>

添加thing.id asng-options将允许您data.things根据它们的 id 而不是它们的引用来选择条目。更改ng-modeltodata.selectedPerson.favorite_thing_id将使 angular 自动更改为基于 的正确选项selectedPerson.favorite_thing_id

jsfiddle:http: //jsfiddle.net/bmleite/4Qf63/

于 2013-02-13T00:19:56.057 回答
0

http://jsfiddle.net/4Qf63/2/做我想要的 - 但它非常不令人满意。

$scope.$watch(function() {
    return $scope.data.selectedPerson;
}, function(newValue) {
    if (newValue) {
        $scope.data.thing = $filter('filter')($scope.data.things, {id: newValue.favorite_thing_id})[0];
    }
})

我希望在 select 语句中看到所有这些都是可能的。也许我会尝试写一个指令。关联 = {key: matchValue} 这样我就可以做到

<select ... ng-model='data.thing' ng-options='t.name for t in data.things' association='{id: "data.selectedPerson.favorite_thing_id"}'></select>
于 2013-02-13T18:37:39.673 回答