【问题标题】:AngularJS - Fill input text field with dropdown menuAngularJS - 用下拉菜单填充输入文本字段
【发布时间】:2015-02-21 10:11:42
【问题描述】:

如何使用下拉菜单填充输入文本字段?

文本输入:

<input type="text" ng-model="storagePlaceModel" lms-dropdown class="form-control lms-input-text-disable lms-dropdown-toggle" id="storagePlace" placeholder="Standort" autocomplete="off" readonly>

自己写的下拉菜单:

<div class="lms-dropdown">
    <div class="lms-dropdown-scrollbar">
        <li ng-repeat="data in data_input_fields.input_cat_music_book_storage_place">
            <span>{{data.input_value}}</span>
            <i ng-show="storagePlaceModel == data.input_value" class="glyphicon glyphicon-ok"></i>
        </li>
    </div>
</div>

如果我选择li 元素,我想用li 值更新storagePlaceModel

更新问题: 因为我有多个带有下拉菜单的文本输入,所以我需要一个解决方案,其中控制器/指令不确切知道模型名称。

指令可能如下所示:

lmsApp.directive('updateInputField', function() {
    return {
        restrict: 'A',
        link: function(scope, elem, attrs) {
            $(elem).click(function(e) {
                // Read out the model name of the html text input field
            });
        }
    };
});

感谢您的帮助!我会很感激每一个答案。

【问题讨论】:

  • 什么是lms-dropdown 指令?
  • lms-dropdown 启用/禁用下拉菜单 - 没有其他包含的代码/功能
  • 如何创建一个指令来包装文本输入和下拉菜单,这样就可以知道它自己的模型?
  • 我该怎么做呢?如何访问父模型名称以及包装是什么意思?

标签: javascript jquery html angularjs


【解决方案1】:

我已经编辑了整个问题以创建一个指令来包装您想要的结构。您将需要的模型传递给指令,这样,每个模型将独立于不同的指令用法:

myApp.directive('myDirective', function() {
    return {
        restrict: "E",
        scope: {
            model: "=",
            datas: "="
        },
        templateUrl: "directive.html",
        link: function(scope, element, attr) {
            scope.updateValue = function(val) {
                scope.model.storagePlaceModel = val;
            }
        }
    }
});

directive.html 包含您的文本输入和下拉菜单。

控制器:

function MyCtrl($scope) {
    $scope.wrapper = {};
    $scope.wrapper2 = {};
    $scope.wrapper3 = {};


    $scope.datas = [
        { "input_value" : "1" },
        { "input_value" : "2" },
        { "input_value" : "3" },
        { "input_value" : "4" }
        ];


}

HTML 用法:

 <div ng-app="myApp" ng-controller="MyCtrl">
    <my-directive model="wrapper" datas="datas"></my-directive>
     <my-directive model="wrapper2" datas="datas"></my-directive>
     <my-directive model="wrapper3" datas="datas"></my-directive>
</div>

Working Fiddle

【讨论】:

  • 我拥有/拥有相同的解决方案 - 我工作正常。但在这种情况下,我必须在控制器中知道文本输入具有哪个模型或模型具有哪个名称。因为我有更多这样的下拉列表,所以我需要一个控制器独立于模型名称的解决方案
  • @BernhardPointner 不太确定我是否听懂了,好像你问的问题与原来的问题不同:) 你能用更清晰的解释更新你的问题吗?
  • 现在几乎所有的作品。 &lt;i ng-show="model.storagePlaceModel == data.input_value" class="glyphicon glyphicon-ok"&gt;&lt;/i&gt; 仅在第一时间更新。再次选择 a 下拉元素时,字形图标不会更新。
  • @BernhardPointner 我更新了小提琴,我没有字体,所以我只是在点击时添加了单词test。看看吧。
  • 非常感谢您的时间和您的回答@Aharon。这只是一个愚蠢的样式问题(glyphicon)现在一切正常! :)
猜你喜欢
  • 1970-01-01
  • 2012-08-14
  • 2018-09-19
  • 2013-05-23
  • 1970-01-01
  • 2019-11-26
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多