当前位置: 首页 > 面试题库 >

AngularJS ng-bind与函数

司寇嘉茂
2023-03-14
问题内容

我想显示“附件”部分的表格格式。我有查询和结果数据。两者都有一个共同的列attachmentTypeId。我想显示基于ID的附件类别描述。在ng- bind我尝试过的尝试中,它没有用。

我在中使用一个函数ng-bind,希望方法错误,期望该方法有一个替代方案。

attachmentLookup包含attachmentDescattachmentTypeId

  $scope.attachmentLookup = [{
    "attachmentDesc": "Category One",
    "attachmentTypeId": "1"
  }, {
    "attachmentDesc": "Category Two",
    "attachmentTypeId": "2"
  }, {
    "attachmentDesc": "Category Three",
    "attachmentTypeId": "3"
  }, {
    "attachmentDesc": "Category Four",
    "attachmentTypeId": "4"
  }, {
    "attachmentDesc": "Category Five",
    "attachmentTypeId": "5"
  }];

attachmentDetails来自数据库的数据一样,

  $scope.attachmentDetails = [{
    "attachmentId": "001",
    "fileName": "File Name 001",
    "attachmentTypeId": "1"
  }, {
    "attachmentId": "003",
    "fileName": "File Name 003",
    "attachmentTypeId": "2"
  }, {
    "attachmentId": "005",
    "fileName": "File Name 005",
    "attachmentTypeId": "3"
  }, {
    "attachmentId": "007",
    "fileName": "File Name 007",
    "attachmentTypeId": "1"
  }, {
    "attachmentId": "009",
    "fileName": "File Name 009",
    "attachmentTypeId": "2"
  }, {
    "attachmentId": "011",
    "fileName": "File Name 011",
    "attachmentTypeId": "3"
  }];

HTML代码为

<table>
  <thead>
    <tr>
      <th>File Name</th>
      <th>|</th>
      <th>Category</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="attachment in attachmentDetails">
      <td> <span ng-bind="attachment.fileName"></span>
      </td>
      <td>|</td>
      <td> <span ng-bind="getCatgoryName(attachment.attachmentTypeId)"></span>
      </td>
    </tr>
  </tbody>
</table>

getCatgoryName控制器的代码是

$scope.getCatgoryName = function (attachmentTypeId) {
    angular.forEach($scope.attachmentLookup, function (attachemnt) {
        if (attachemnt.attachmentTypeId === attachmentTypeId)
            return attachemnt.attachmentDesc;
    });
};

样本柱塞:http
://plnkr.co/edit/dZy5gW4q9CxWF2NszXYc


问题答案:

括号是否经过脏检查,因此每个函数都会被调用$digest

ng-bind是一条指令,它将在传递给的内容上使用观察者ng-bind

因此,ng-bind仅在传递的变量或值确实发生更改时才适用。

使用函数时,您没有传递变量,因此不会为每个变量触发$digest

因此,最好在函数调用中使用方括号。

我在这里更新了插件:http
://plnkr.co/edit/LHC2IZ0Qk9LOOYsjrjaf?p=preview

我在这里更改了HTML:

<tr ng-repeat="a in attachmentDetails">
    <td> <span>{{a.fileName}}</span></td>
    <td>|</td>
    <td> {{ getCatgoryName(a.attachmentTypeId) }}</td>
</tr>

该功能也已修改

  $scope.getCatgoryName = function(attachmentTypeId) {
    var desc = "";
    angular.forEach($scope.attachmentLookup, function(attachemnt) {
      if (parseInt(attachemnt.attachmentTypeId) == attachmentTypeId)
        desc = attachemnt.attachmentDesc;
    });

    return desc;
  };


 类似资料:
  • 问题内容: 我想知道ng-bind-html和bind-html-compile指令之间的区别。例如我给 到ng-bind-html,这会剔除bind-html-compile所没有的样式。我可以知道何时应该使用每个指令。谢谢。 问题答案: bind-html-compile 不是标准的Angular指令,它带有模块https://github.com/incuna/angular- bind-h

  • 我在尝试用std::function和std::bind绑定方法时遇到了一个问题。 在我的通信服务类中: CommunicationService::ManageGetRequest签名: BindGET签名: 请求函数类型定义: BindGET上的错误: 错误C2664:“void RESTServer::BindGET(RequestFunction)”:无法从“std::\u Binder”

  • 问题内容: 有什么方法比它还好用吗? 例如,我有一个示例代码,如下所示: 您可能会注意到,选择器只检索了一项,在我的情况下,页面加载时该名称已经存在;没有动态添加。重要的是要提到我使用的是最新版本的jQuery:1.7.2。 对于该示例,即使我不使用该功能提供的其他功能,也应使用该示例? 问题答案: 在内部,直接映射到当前版本的jQuery。(同样适用于。)因此,如果您改而使用,则对性能的影响很小

  • 本文向大家介绍c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind,包括了c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind的使用技巧和注意事项,需要的朋友参考一下 一、符号修饰与函数签名 1、符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名。G

  • 问题内容: 我已经知道了,并且是类似的函数集(函数的上下文)。 区别在于我们发送参数的方式(手动vs数组) 题: 但是什么时候应该使用该 方法? 问题答案: 当你希望稍后在特定上下文中调用该函数时使用,该事件在事件中很有用。当你想立即调用该函数并修改上下文时,请使用或。 调用/应用立即调用该函数,而bind返回一个函数,该函数在以后执行时将具有用于调用原始函数的正确上下文集。这样,你可以在异步回调

  • 我有两个函数的重载,它们采用不同的s,当与的结果一起使用时,会导致后者的歧义问题。我不明白为什么只有这是模棱两可的。 将< code>int()与< code>bind函数一起使用时,我得到一个模糊错误 gcc-5.1错误(类似的还有clang) 然而,以下所有工作 查看构造函数 对我来说,任何在不同的类型上具有多个重载的函数都应该有歧义,但这只是绑定调用的问题。然后我想“也许有一些神奇的事情发生