【问题标题】:AngularJS populate textbox from arrayAngularJS 从数组中填充文本框
【发布时间】:2015-04-03 01:09:56
【问题描述】:

我遇到了 AngularJS 的问题。我制作了一个应用程序,用户可以 从下拉列表中选择一个值。如果用户按下“添加”按钮,则会创建一个数组来保存他的所有选择。我想用所有这些选择填充一个文本框。我尝试过 ng-repeat 但它使用每个数组值创建多个文本框。这是我到目前为止所做的:

控制器

$scope.multiCompare= [];

// Create the function to push the data into the "multiCompare" array
$scope.newCompare = function () {

    $scope.multiCompare.push($scope.compareDate);


    $scope.multiComparedate = '';



};

HTML

<div class="form-group">
                <label for="installation_year" class="col-sm-2 control-label">Period</label>
                <div class="col-sm-4">
                    <select class="form-control" ng-model="compareDate" ng-options="res for res in compareDates " ng-disabled="disableFormInput()" ></select>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default" ng-click="newCompare()">Add</button>
                     </div>
            </div>
            <div class="form-group">
                <label for="from_date" class="col-sm-2 control-label">Compare</label>
                <div class="col-sm-4">
                    <div ng-repeat="num in multiCompare" track by $index>
                        <input class="form-control" type="text" ng-model="$parent.multiCompare[$index]">
                        <div> {{num}}</div>
                    </div>
                </div>

第一张图片显示了我在添加 2013 和 2014 时得到的结果,第二张图片显示了我希望它返回的结果。

有人可以帮我解决这个问题吗? 提前谢谢..

【问题讨论】:

  • 能否提供 compareDates & multiCompare 数组?

标签: arrays angularjs forms binding textbox


【解决方案1】:

我已经做到了我想做的事。我将我的 html 代码更改为:

<div class="form-group">
                <label for="from_date" class="col-sm-2 control-label">Compare</label>
                <div class="col-sm-4">
                    <div data-ng-repeat="num in multiCompare" track by $index>
                        <input class="form-control" type="text" ng-model="multiCompare" ng-list {{num}} ng-show="$last" />
                    </div>
                </div>
            </div>

它奏效了! 您的 ng-list 建议真的很有帮助!非常感谢!

【讨论】:

    【解决方案2】:

    为了呈现您的比较字段输入,您可以使用ngList 指令。这会将逗号(,)分隔的输出直接绑定到输入元素。

    改变

    <label for="from_date" class="col-sm-2 control-label">Compare</label>
    <div class="col-sm-4">
        <div ng-repeat="num in multiCompare" track by $index>
            <input class="form-control" type="text" ng-model="$parent.multiCompare[$index]">
            <div> {{num}}</div>
        </div>
    </div>
    

    <label for="from_date" class="col-sm-2 control-label">Compare</label>
    <div class="col-sm-4">
        <input class="form-control" type="text" ng-model="multiCompare" ng-list/>
    </div>
    

    这对你有帮助,谢谢。

    【讨论】:

    • 每次用户单击添加按钮时,multiCompare 数组都会填充所选的下拉周期值,并且我希望此数组与文本框绑定,以逗号分隔的输出形式出现。不幸的是,上面的代码在我的情况下不起作用......
    • multiCompare 数组包含什么?你能给我一些样品吗..我在想它包含[2013,2014]
    • @Olgapoliti 如果我的回答有帮助,则将其标记为正确...我将编辑我的回答...您可以吗?
    • 我给了它一个 +1,因为它很有帮助,但不是解决我问题的答案。由于我很难找到这个问题的答案,我不希望你编辑你的答案。此外,+1 总是一种奖励......
    • @Olgapoliti 我让你给我样品数组,因为我不知道multiCompare,我在等你的回复。但你没有给我。而且您的问题也不是很清楚..没有正确解释问题。好的,感谢您的投票。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多