如何将智能表“st-search”与 ng-model 集成?

2023-12-13

如何在Smart Table上设置不考虑用户输入的输入搜索值? ?? 这是我的代码,当用户单击复选框时,输入字段会自动输入“Sam”,但表记录不会被过滤。并更新...这是我的代码:

<body>
  <div class='container' ng-app='smarttabledemo' ng-controller='smarttabledemo'>
  <table st-table='data' class='table'>
    <thead>
      <tr>
        <th colspan='999'>
        <input name="myCheck[]" type="checkbox" id="myCheck"
               st-submit-search  ng-model="confirmed" ng-true-value="30"
               ng-false-value="1" ng-change="showcheckbox();">

       <input st-search="firstName" placeholder="search for firstname"
              class="input-sm form-control" type="search"
              ng-value="myVar" ng-model="myVar"/>
        </th>
      </tr>
      <tr>
        <th st-sort='firstName'>First Name</th>
        <th st-sort='lastName'>Last Name</th>
        <th st-sort='phone'>Phone Number</th>
        <th st-sort='hometown'>Hometown</th>
      </tr>
    </thead>
    <tbody>
      <tr st-select-row='row' ng-repeat='row in data'>
        <td>{{row.firstName}}</td>
        <td>{{row.lastName}}</td>
        <td>{{row.phone}}</td>
        <td>{{row.hometown}}</td>
      </tr>
    </tbody>
  </table>

</div>
'use strict';
angular.module('smarttabledemo', ['smart-table'])
.run(function() {
  console.clear();
})

.controller('smarttabledemo', function($scope) {
  $scope.data = [
    { firstName: 'Sam', lastName: 'Evans', phone: 'Not Provide', hometown: 'Anytown, ST' },
    { firstName: 'Saul', lastName: 'Evans', phone: '555-555-1234', hometown: 'Anytown, ST' },
    { firstName: 'Charlie', lastName: 'Anders', phone: '555-555-9876', hometown: 'Springfield, ST' },
    { firstName: 'Jessica', lastName: 'Cortez', phone: 'Not Provide', hometown: 'Springfield, ST' },
    { firstName: 'Amy', lastName: 'Wood', phone: '555-555-1348', hometown: 'Metroville, ST' },
  ]
      $scope.showcheckbox = function () {  
var myCheck = document.getElementsByName("myCheck[]");

    for (var i = 0; i < myCheck.length; i++) {
      if(myCheck[i].checked ){
        $scope.myVar = "Sam";
      }    
    }
}

enter image description here enter image description here

Fiddle这是我的代码,谢谢 我的目标是希望用户单击复选框,该表是搜索“Sam”记录,谢谢


智能表未与ng-model指令和ng模型控制器.

这是一个替代品st-search指令将智能表搜索与ng-model指示:

app.directive('xdStSearch', ['stConfig', '$timeout', function (stConfig, $timeout) {
    return {
      require: {table: '^stTable', model: 'ngModel'},
      link: function (scope, element, attr, ctrl) {
        var tableCtrl = ctrl.table;
        var promise = null;
        var throttle = attr.stDelay || stConfig.search.delay;
        var event = attr.stInputEvent || stConfig.search.inputEvent;
        var trimSearch = attr.trimSearch || stConfig.search.trimSearch;

        attr.$observe('xdStSearch', function (newValue, oldValue) {
          var input = ctrl.model.$viewValue;
          if (newValue !== oldValue && input) {
            tableCtrl.tableState().search = {};
            input = angular.isString(input) && trimSearch ? input.trim() : input;
            tableCtrl.search(input, newValue);
          }
        });

        // view -> table state
        ctrl.model.$parsers.push(throttleSearch);
        ctrl.model.$formatters.push(throttleSearch)

        function throttleSearch(value) {
          if (promise !== null) {
            $timeout.cancel(promise);
          }    
          promise = $timeout(function () {
            var input = angular.isString(value) && trimSearch ? value.trim() : value;
            tableCtrl.search(input, attr.xdStSearch || '');
            promise = null;
          }, throttle);
          return value;
        }
      }
    };
}])

Usage

<input xd-st-search="{{searchCol}}" 
     placeholder="search for {{searchCol}}"
     class="input-sm form-control"
     ng-model="searchVal" />

The DEMO

angular.module('app', ['smart-table'])
.directive('xdStSearch', ['stConfig', '$timeout', function (stConfig, $timeout) {
    return {
      require: {table: '^stTable', model: 'ngModel'},
      link: function (scope, element, attr, ctrl) {
        var tableCtrl = ctrl.table;
        var promise = null;
        var throttle = attr.stDelay || stConfig.search.delay;
        var event = attr.stInputEvent || stConfig.search.inputEvent;
        var trimSearch = attr.trimSearch || stConfig.search.trimSearch;

        attr.$observe('xdStSearch', function (newValue, oldValue) {
          var input = ctrl.model.$viewValue;
          if (newValue !== oldValue && input) {
            tableCtrl.tableState().search = {};
            input = angular.isString(input) && trimSearch ? input.trim() : input;
            tableCtrl.search(input, newValue);
          }
        });

        // view -> table state
        ctrl.model.$parsers.push(throttleSearch);
        ctrl.model.$formatters.push(throttleSearch)
        
        function throttleSearch(value) {
          if (promise !== null) {
            $timeout.cancel(promise);
          }

          promise = $timeout(function () {
            var input = angular.isString(value) && trimSearch ? value.trim() : value;
            tableCtrl.search(input, attr.xdStSearch || '');
            promise = null;
          }, throttle);
          return value;
        }
      }
    };
}])
.controller('mainCtrl', function ($scope, $timeout) {
    var nameList = ['Pierre', 'Pol', 'Jacques', 'Robert', 'Elisa'];
    var familyName = ['Dupont', 'Germain', 'Delcourt', 'bjip', 'Menez'];
    $scope.columns = ['firstName', 'lastName', 'age', 'email', 'balance'];

    $scope.rowCollection = [];
    for (var i = 0; i < 10; i++) {
        $scope.rowCollection.push(createRandomItem());
    }
        
    $scope.changeSearch = function () {
           $scope.firstName = 'Ghazanfar';
    };

    function createRandomItem() {
      var
          firstName = nameList[Math.floor(Math.random() * 4)],
          lastName = familyName[Math.floor(Math.random() * 4)],
          age = Math.floor(Math.random() * 100),
          email = firstName + lastName + '@whatever.com',
          balance = Math.random() * 3000;

          return {
              firstName: firstName,
              lastName: lastName,
              age: age,
              email: email,
              balance: balance
          };
      }
})
 <script src='//unpkg.com/angular/angular.js'></script>
 <script src='//unpkg.com/angular-smart-table/dist/smart-table.js'></script>
<body ng-app="app" ng-controller="mainCtrl">
  <div class="table-container">
    <div>Preset
       <select ng-model="searchVal">
         <option value="Ja">Ja</option>
         <option value="Po">Po</option>
         <option value="j">j</option>
       </select>
    </div>
    <table st-table="rowCollection" class="table table-striped">
        <caption style="text-align: left">
          <input st-search placeholder="global search" 
             class="input-sm form-control" />
          <br>
          <select ng-model="searchCol" ng-init="searchCol='firstName'">
            <option value="firstName">Search firstName</option>
            <option value="lastName">Search lastName</option>
          </select>
          <input xd-st-search="{{searchCol}}" 
             placeholder="search for {{searchCol}}"
             class="input-sm form-control"
             ng-model="searchVal" />
        </caption>
        <thead>
            <tr>
                <th ng-repeat="col in columns" st-sort="{{col}}">{{col}}</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="row in rowCollection">
                <td ng-repeat="col in columns">{{row[col]}}</td>
            </tr>
        </tbody>
    </table>
  </div>
</body>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将智能表“st-search”与 ng-model 集成? 的相关文章

  • Eslint errorring 导入没有扩展名的 jsx

    我正在尝试在 es6 中导入 jsx 文件而不需要 jsx 扩展名 import LoginErrorDialog from LoginErrorDialogView Not import LoginErrorDialog from Log
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 如何在 angular-ui 中动态禁用 ui-sortable 指令

    我正在使用 Angular ui 使用 ui sortable 指令进行排序 是否可以根据范围状态动态启用 禁用可排序功能 因此 我需要一个按钮来更改范围属性的状态 并且根据此属性可排序是否应该工作 角度指令支持观察可排序选项何时发生变化
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐

  • wordpress 致命错误:内存不足

    我已从 WHM gt PHP 配置编辑器将 php 内存限制从 whm 设置为 256M 即便如此 我的 WordPress 网站和管理员仍然向我显示如下错误 Fatal error Out of memory allocated 3617
  • TCP 套接字的 Android 服务

    根据我在这里提出的上一个问题中的建议 我正在尝试为我已写入服务的应用程序推送套接字连接 昨天我花了一天的大部分时间研究服务 实际上模拟了一些服务 一个是远程的 一个是本地的 我的问题分为两部分 1 在使用了本地服务和远程服务之后 我仍然不确
  • 什么是 ANSI 格式?

    什么是 ANSI 编码格式 是系统默认格式吗 它与 ASCII 有何不同 ANSI 编码是一个稍微通用的术语 用于指代系统 通常是 Windows 上的标准代码页 它更正确地称为Windows 1252关于西方 美国系统 它可以代表某些其他
  • 具有多个数字的欧几里得算法(GCD)?

    所以我正在用 Python 编写一个程序来获取任意数量的数字的 GCD def GCD numbers if numbers 1 0 return numbers 0 i m stuck here this is wrong for i i
  • 如何在audioPlayerDidFinishPlaying方法中多次播放()

    当我按 yourButton 或 yourButton2 或 yourButton3 时 每个都会播放一个音频文件 并且在播放音频时 UIButton 被设置为选中 我希望 yourButton4 连续实现其他 UIButton 的方法 首
  • Android Studio - JDK 问题、Android Studio 崩溃

    当我将 Java JDK 8 从 Update 40 更新到 45 后 我的所有项目打开时都出现错误 你知道 代码上的红色字母 当我点击 Alt Enter 时 它显示 Setup JDK 我尝试卸载 Java 和 Android Stud
  • iOS/Swift UIImageView (.jpg) 无法识别我的点击手势?

    我有一个简单的代码块 可以在我的图像被点击时播放声音 然而 当我点击我的图像时 点击甚至无法被识别 我相信这是真的 因为在点击图像时 handleTap 函数中的 println 不会打印任何内容 谁能给我一些关于问题可能出在哪里的见解 v
  • 为什么这个 XPath 表达式在 xmlstarlet 中没有返回正确的值?

    我正在尝试使用 xmlstarlet 提取此 KML 文件中 坐标 节点的内容 KML 文件使用 xmlstarlet 本身可以很好地验证 我将其缩减为一个小测试文件 其中包含
  • 在 Spring Boot 测试中加载不同的 application.yml

    我正在使用一个 Spring Boot 应用程序来运行我的src main resources config application yml file 当我通过以下方式运行测试用例时 RunWith SpringJUnit4ClassRun
  • MpAndroidChart Piechart 图例在底部中心切割问题

    我已附上截屏我的使用图表 红色框中显示传说 他们正在饼图上切割 下面是我的代码 pieChart setUsePercentValues false pieChart getDescription setEnabled false pieC
  • 使用 Chrome 语音识别有任何限制吗?

    我想在我的商业网络应用程序中使用 webkit speech recognition 是否有任何限制 网站查询限制 禁止商业用途 5分钟 300秒 后有超时 虽然我找不到任何文档
  • Python 骰子模拟

    我对模拟掷骰子的家庭作业有点困惑 问题要求创建一个返回 1 到 6 之间的随机整数值的函数 并创建一个主程序 询问用户要掷多少个骰子 必须限制为 5 个骰子 并调用该函数来打印生成的骰子价值观 到目前为止我有这个 import random
  • 如何从列表中获取不同的数据?

    我想要得到distinct人员名单中的名单 List
  • 从 MySQL 中的多个表中删除行

    我正在尝试从projects表以及与该项目相关的所有图像images table 可以说p id 10 DELETE FROM projects images WHERE projects p id AND images p id 这个查询
  • 我们可以用 C# 中的带有默认方法的接口替换抽象类吗

    在 C 8 0 中 我们有一个新功能 可以在接口中提供默认方法实现 该方法也可以被其实现类覆盖 我们曾经使用带有实例方法的抽象类来为其所有实现类提供通用功能 现在我可以将那些具有实例方法的抽象类替换为具有 C 8 0 中的默认方法实现的接口
  • 如何复制/克隆整个 Google App Engine 项目

    我想知道是否有任何方法可以克隆谷歌应用程序引擎项目 我找不到任何与此相关的帮助 尽管人们经常需要此功能 假设我开始开发一个应用程序引擎应用程序 配置了如此多的选项 api 现在它将成为我的临时项目 我想要一个单独的生产项目 设置具有相同设置
  • sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:bigquery

    尝试使用 sqlalchemy 创建 bigquery 连接器 from sqlalchemy import create engine engine create engine bigquery
  • Delphi 2010 对象检查器网格和 Windows dpi

    我在高分辨率宽屏上工作 并将 dpi 设置为 144 这样我可以更好地看到字体 Delphi 2010 对象检查网格中的问题我看不到属性或事件名称的文本 网格无法缩放 有什么解决办法吗 thank 读完你的文章后 我问 Uwe Schust
  • 通过字符串名称访问变量值(groovy)

    我做了一些研究 但还没有找到适合我的案例的工作代码 我有两个名为test and test2我想将它们放入以下格式的地图中 test valueof test test2 valueof test2 我的一段代码如下 def test HE
  • 如何将智能表“st-search”与 ng-model 集成?

    如何在Smart Table上设置不考虑用户输入的输入搜索值 这是我的代码 当用户单击复选框时 输入字段会自动输入 Sam 但表记录不会被过滤 并更新 这是我的代码 div class container table class table