javascript - 链接选择框

标签 javascript angularjs angularjs-directive html-select

我想知道如何使用 Angular 实现“链接”选择框,例如我们是否需要设置项目的出现顺序,例如:

enter image description here

因此,如果我将第一个项目的出现顺序更改为 3 ,它会自动将第三个项目的出现顺序交换为 1 ,或者如果我将第二个项目的出现顺序更改为 1 ,它会将第一个项目的出现顺序交换为 2 ,依此类推。我不希望项目在视觉上改变顺序,我只想分别更改它们的选择框值。

最佳答案

我确信我会在 SO 找到解决方案,但没有运气。所以我将在这里发布我的解决方案,因为它不是很琐碎,可能会对某人有用,或者有人会发布更优雅的东西。

查看:

<ul ng-controller="Ctrl">
    <li ng-repeat="item in items">        
        <label>
            Item {{$index}}. Order of Appearance:
            <select ng-model="item.order" ng-options="o.order as (o.order+1) for o in items"  ></select> {{item}}
        </label>
    </li>
</ul>

Controller :

function Ctrl( $scope , $filter ){

    $scope.items = [ { order:0 } , {  order:1 }  , { order:2 } ]; // Default order

    for(var i in $scope.items){

        (function( item ) {            // Tricky part , need to use IIFE

            $scope.$watch( function(){ return item; }, function(n,o){

                if(n == o) return;

                var rel = $filter('filter')($scope.items, function( item_for_filtering ){

                            // Filtering previous element with same order

                     return (item_for_filtering.order == n.order && item_for_filtering!= n)

                } )[0];

                if(rel)
                   rel.order = o.order;   // Giving prev element new order 

            },true );

        })( $scope.items[i] );
    }
}

工作示例:http://jsfiddle.net/cherniv/D3zd8/

关于javascript - 链接选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19538151/

相关文章:

angularjs - ng-show 无法基于 AngularJs 版本工作

angularjs - 通过 AngularJS 中的模型绑定(bind)更改 Kendo 图表类型

javascript - 调用 CSS 类而不是使用 JQuery (.css()) 插入属性

javascript - 是否有异步 :false in Jquery? 的替代方案

javascript - 如何在指令的情况下更改下拉列表的默认文本并对指令应用所需的验证

javascript - Angularjs 使用 ng-repeat 选择,在选择时将 ng-model 与对象绑定(bind)

javascript - phonegap angularjs 条码扫描器

javascript - 如何在更改值时获取数据列表中的 id 值?

javascript - 访问 Node 中 PDFCrowd 的 saveToFile 方法中的结束事件

javascript - 更改文本区域模型后指令不会触发