根据$ scope匹配

时间:2015-10-19 21:35:15

标签: angularjs forms angularjs-scope angularjs-ng-repeat html-select

我有一个使用ng-repeat显示两列的表。

第一列是从一个来源提取的项目列表。

第二列是从第二个列表中拉出的选择元素。

我想要做的是在下拉菜单中自动选择一个选项,如果它与左栏中显示的选项相匹配。

我把小提琴放在一起:https://jsfiddle.net/raz1j9rt/1/

这是我的HTML:

<header>
    <title>myTittle</title>
</header>
<body ng-app='myApp' ng-controller='myController'>
    <div class="col-md-10 col-md-offset-1">
        <div>
            <form>
                <table class="table  table-striped">
                    <thead>
                        <th>From File</th>
                        <th>Map To</th>
                    </thead>
                    <tr class="selector-row" ng-repeat="(key,value) in List1">
                        <td><span id="myspan">{{value}}</span>

                        </td>
                        <td style="padding:10px;">
                            <select name="repeatSelect" id="repeatSelect" ng-model="data[value]" class="form-control">
                                <option ng-repeat="(key,value) in Match" value="{{value}}">{{value}}</option>
                            </select>
                        </td>
                    </tr>
                </table>
            </form>{{ data }}</div>
    </div>
</body>

这是我的JS:

var app = angular.module('myApp', [])
app.controller('myController', ['$scope', function ($scope) {
    $scope.data = {};

    $scope.List1 = ['product1', 'product2', 'product3', 'product4', 'product5'];
    $scope.Match = ['product1', 'somethtingElse1', 'product3', 'somethingElse2', 'product5'];


}])

不确定从哪里开始...

1 个答案:

答案 0 :(得分:1)

扩展Claies点,这是一个工作小提琴。

https://jsfiddle.net/dboskovic/raz1j9rt/2/

将此添加到您的控制器。

// setup default matches
angular.forEach($scope.List1, function(v){
    $scope.data[v] = $scope.Match.filter(function(d){
        if(d === v) return true;
        return false;
    })[0];
})

然后将您的选择更改为:

<select name="repeatSelect" id="repeatSelect" ng-model="data[value]" class="form-control" ng-options="x for x in Match"></select>