从一个范围/ ng-options中删除(拼接)值,同时在另一个范围内保留值

时间:2015-10-28 18:20:44

标签: angularjs angularjs-scope ng-repeat

我有一个由一个范围填充的下拉列表,并使用另一个范围显示相同的列表。当我从下拉列表中选择某些内容时,我想将其隐藏/从显示列表中删除,但保留下拉列表中的完整列表。

I have a JS fiddle started: https://jsfiddle.net/mfzbk8nv/6/

小提琴:enter link description here

现在发生的事情是它删除了显示列表中的第一个字母而不是我要删除的那个字母。其次,它从下拉列表和置换列表中删除。

任何帮助表示赞赏!

我的HTML:

<div  ng-app="myApp" ng-controller="myController">
    <select ng-model="mySel" ng-options="i for i in list2" ng-change="removeIt(mySel)" ></select>

    <ul style="list-style:none;">
        <li ng-repeat="item in list1">
            {{item}}
        </li>
    </ul>
</div>

我的JS:

var app = angular.module('myApp', [])
app.controller('myController', function ($scope) {
    $scope.data = {};
    var arr = ['a', 'b', 'c', 'd', 'e']
    $scope.list1 = arr;
    $scope.list2 = arr;

    $scope.removeIt = function(i){    
        $scope.list1.splice(i,1)        
    }    
})

2 个答案:

答案 0 :(得分:1)

ng-options没有$index,仅在ng-repeat

您必须创建自己的方法来索引ng-options,方法是将事物分组并创建自己的。

<select ng-model="mySel" 
    ng-options="index as mySel for (index, mySel) in list2"
    ng-change="removeIt(mySel)" />

现在mySel将是index,每次迭代都不会创建。{/ p>

<强> jsFiddle Updated Demo here

答案 1 :(得分:0)

list1和list2都引用相同的数组arr。因此,当您更改其中一个时,您将更改另一个。 尝试复制它

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if form.validate_on_submit():       
            if user is None:
                user = User(name=form.name.data,email=form.email.data,password=form.password.data) 
                db.session.add(user)
                db.session.commit()
                login_user(user,remember=True)
                return redirect(url_for('index'))
            else:
                user=User(name=form.name.data,password=form.password.data,email=form.email.data)
                if True #eventually this will check whether the password you inputted matches the password associated with the email you inputted:
                    login_user(user,remember=True)
    return render_template('login.html', form=form,)

@app.route("/logout")
@login_required
def logout():
    logout_user()
    return redirect(url_for("index"))

@app.before_request
def before_request():
    g.user = current_user