【问题标题】:Angular directive add template on textbox (enter of Spacebar)Angular 指令在文本框上添加模板(空格键输入)
【发布时间】:2017-04-13 11:17:42
【问题描述】:

我正在使用 Angular js,我的目标是在文本框中(输入空格键)上显示一个 html 表格,并在该文本框中添加表格的元素,因为我已经写了一个指令,但我不确定是否我已经在正确的道路上做到了..哦,我会详细展示它以更清楚

这是我的 html 文本框

<input type="text" helps ng-model="firstText" code="1">
<div class="col-xs-4 pull-right" helps  donotapply=true></div> //Do i need this??

helps 是我的指令,它将我的 html 绑定到 div,这是我的指令代码

app.directive('helps', ['$parse', '$http','$filter', function ($parse, $http,$filter) {
    return {
        restrict: 'AE',
        scope: true,
        templateUrl: 'Table.html',
        link: function (scope, element, attr) {
            console.log(element);
            element.bind("keypress", function (event) {
                    if (event.which === 114 || event.which === 32) {

                        scope.enterMe = function () { // this is to add data to Table

                                scope.newArray = [
                                       {'code' :1,'name' : 'name1','age' : 24},
                                       {'code' : 2,'name' : 'name2','age' : 26},
                                       {'code' : 3,'name' : 'name3','age' : 25}
                                    ]
                            };

                        scope.setElement = function (element) {  // Here set element function is to add my table name to textbox
                            var modelValue = tempattr.ngModel + '_value';
                            var model = $parse(tempattr.ngModel);
                            model.assign(scope, element.name);
                            modelValue = tempattr.ngModel + '_value';
                            modelValue = $parse(modelValue);
                            modelValue.assign(scope, element.code);
                        };
                    }
                }
            });
        }

    }
}]);

现在是我的 Table.html

<div class="col-xs-4 pull-right" ng-show="hideMyMtHelpDiv">
    <input type="text" ng-model="searchText" placeholder="search">
    <input type="button" ng-model="gad" value="GO" ng-click="enterMe();">
    <table ng-show="getTableValue" class="table table-bordered table-responsive table-hover add-lineheight table_scroll">
        <thead>
            <tr>
                <td>
                    Code
                </td>
                <td>
                    Name
                </td>
                <td>
                    Age
                </td>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="test in newArray" ng-dblclick="setElement(test);">
                <td>
                    {{test.code}}
                </td>
                <td>
                    {{test.name}}
                </td>
                <td>
                    {{test.age}}
                </td>
            </tr>
        </tbody>
    </table>
</div>

现在我的问题是,我的表格与我的 div 以及我的输入文本框绑定;那么,有没有合适的方法来做到这一点?

如果我的问题仍然不清楚,请发表评论。 感谢您的帮助

在这里查看我的 plunker https://plnkr.co/edit/lAUyvYKp1weg69CsC2lg?p=preview 并阅读自述文件

【问题讨论】:

  • 你能把它变成一个工作的小伙伴吗?
  • 代码看起来是合法的,但你也可以在一个输入上实现它,因为你可以使用限制:'A'
  • 抱歉,澄清一下:您想要一个在其中一个单元格中包含文本框的表格?或者你想显示一个文本框,然后在文本框内显示一个表格?
  • 我想在我的文本框的空格键上显示一个表格
  • 您好,我已经添加了我的 plunker,请检查并帮助...并阅读其中的 readfile。谢谢

标签: javascript jquery html angularjs angularjs-directive


【解决方案1】:

首先,您在 input 和 div 中都使用了 save 指令。您可以将它们分开作为第一步:

mod.directive('onKeydown', function() {
    return {
        restrict: 'A',
        scope: {
             setShowSearch: '&'
        },
        link: function(scope, elem, attrs) {

             elem.on('keydown', function(event){

                  if (event.which === 114 || event.which === 32) {
                      setShowSearch()(true);
                  }

             });
        }
    };
});

然后您可以传递一个函数来将您的 showSearch 变量设置为该指令并在您的输入中使用它:

<input type="text" ng-model="firstText" hpcode="1" on-keydown="" set-show-search="setShowSearch"/>

现在setShowSearch 生活在你的controller 而不是你的directive 所以它有自己的scope

myApp.controller('MyController', ['$scope', function($scope) {
  $scope.setShowSearch = function(show) {
      //do whatever you want here
  };

  $scope.msg = 'This Must Work!';
}]);

一旦完成,您现在就有了一个负责显示表格的干净指令,其余的只是以类似的方式将该数组传递给该指令。

希望这会有所帮助。

【讨论】:

  • 我的 plunker 正在工作我只想隔离我的范围,以便其他人无法访问我的指令范围
  • 请检查我的 plunker,我是从 2 个元素中调用它的,请阅读 plunker 中的 README ...您能否为您的解决方案制作一个 plunker,这将有所帮助,谢谢
  • 你能告诉我这里的工作流程是什么,我有点迷茫
  • 哦,在你看到的texbox中按空格键,然后按go按钮,然后双击表格的任意一行,现在我的范围在这里是真的,所以我想要隔离范围,所以范围应该是{},如果我的范围是{},它就不起作用...你明白了吗??
  • 可能我说错了,双击任意一行会发生什么?是否应该只隐藏搜索栏,或者不应该输入不获取该行的值或...
猜你喜欢
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 2013-10-17
  • 2016-09-19
相关资源
最近更新 更多