如何使用 AngularJS 指令中的编译函数来重复服务中的元素

2024-01-05

请有人告诉我需要做什么才能在指令中呈现存储在服务中的数组中的新元素。在下面的示例中,来自服务的警报显示每个新元素都已添加到 elements 数组中,但是如何使指令在页面上显示这些新元素呢?

我尝试阅读有关的所有内容compile指令中的函数,但无法理解如何使我的示例工作。

这里有一个jsfiddle http://jsfiddle.net/Vczj6/11/.我所需要的只是在将新消息添加到服务中的消息数组后在指令内呈现新消息。

The Chat服务作为指令注入到指令中chat变量,并且在指令模板中我想重复来自服务的每条消息:

'<ul>' +
     '<li ng-repeat="message in chat.messages">' +
          '<strong>{{message.name}}</strong> {{message.text}}' +
      '</li>' +
'</ul>'

示例代码已开启jsfiddle http://jsfiddle.net/Vczj6/11/及以下:

HTML:

<div ng-app="myApp">
<my-simple-chat title="AngularJS Chat"></my-simple-chat>
</div>

JavaScript:

angular.module('myApp', [])
.factory('Chat', function () {
    var messages = [];
    function sendMessage(name, text) {
        messages.push(
            {
                name: name,
                text: text
            });
        alert("Sending message from factory: " + name + ", " + text + " : " + messages.length);       
    };

    return {
        messages: messages,
        sendMessage: sendMessage
    };

})
.directive('mySimpleChat', ['Chat', function (chat) {

    var tmpl = '<div><h2>{{title}}</h2>' +
                    '<input type="text" ng-model="name" placeholder="Type your name"/>' +
                    '<hr />' +
                    '<form ng-submit="sendMessage()">' +
                        '<input type="text" ng-model="text" required placeholder="Type a new message..."/>' +
                        '<input type="submit" id="submit" value="Send"/>' +
                    '</form>' +
                        '<ul>' +
                            '<li ng-repeat="message in chat.messages">' +
                                '<strong>{{message.name}}</strong> {{message.text}}' +
                            '</li>' +
                        '</ul>' +
                '<div>';

    return {
        restrict: 'E',
        replace: true,
        scope: { title: '@title' },
        template: tmpl,

        controller: ['$scope', '$element', '$attrs', '$transclude',
          function ($scope, $element, $attrs, $transclude) {
              $scope.name = 'MyName';
              $scope.text = '';

              $scope.sendMessage = function () {
                  chat.sendMessage($scope.name, $scope.text);
                  $scope.text = '';

              };

          }],

    };
}]);

您正在使用ngRepeat on chat.messages但从不分配chat成为其中的一部分$scope.

    controller: ['$scope', '$element', '$attrs', '$transclude',
      function ($scope, $element, $attrs, $transclude) {
          $scope.name = 'MyName';
          $scope.text = '';
          $scope.chat = chat;  //<--this so you can use ngRepeat
          $scope.sendMessage = function () {
              chat.sendMessage($scope.name, $scope.text);
              $scope.text = '';

          };

      }],

更新了小提琴。 http://jsfiddle.net/markcoleman/Vczj6/15/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 AngularJS 指令中的编译函数来重复服务中的元素 的相关文章

随机推荐

  • 将服务注入 Ember 对象 [不是 Ember 控制器]

    我正在尝试将 Ember 服务注入 Ember 对象 但不断收到以下错误 Assertion Failed Attempting to lookup an injected property on an object without a c
  • 想要在 iPhone 上显示 3D 模型:如何开始? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • Postgres 将子查询结果括在括号中

    不要注意所提供的查询的无用性 它只是复杂查询的简化部分 我运行查询 SELECT elem FROM SELECT id FROM data AS elem 它产生的结果是 elem 5 4 24 3 23 为什么每个值都用括号括起来 所以
  • 没有依赖于模板参数的参数

    我正在尝试执行以下操作 template
  • 捕获所有键盘输入

    首先 我知道这可以用于键盘记录器 我不打算这样做 我正在寻找一个应用程序来侦听自定义按键组合 只是为了自动执行一些非常烦人的任务 有没有办法捕获键盘的所有输入 您似乎正在寻找RegisterHotKey http msdn microsof
  • 如何使用python脚本转换dos2unix csv文件

    我想在 Windows 中使用 python 将 csv 文件转换为 dos2unix 格式 现在我正在通过将 csv 文件放置在工作区 服务器 中并在 putty 中运行命令来手动执行操作 命令 dos2unix file receive
  • Compose UIBarButtonItem 在进入视图时会稍微改变位置

    当在导航栏中使用 UIBarButtonSystemItemCompose 按钮 呈现新视图时 位置会稍微偏离并在视图进入视图后进行调整 我认为这是iOS 使用8 3版本 中的一个错误 仅在使用 UIBarButtonSystemItemC
  • Puppet 6 和模块 puppetlabs/accounts 不会以 Hiera YAML 格式创建用户帐户

    当我跑步时puppet agent test我没有错误输出 但用户没有创建 我的木偶 hira yaml 配置是 version 5 datadir etc puppetlabs code environments data hash ya
  • 使用 BFS 查找网格上对象的可能路径数

    我有一个代表网格的矩阵 并且想找出对象可以移动到的所有可能的位置 物体只能水平或垂直移动 假设下面的示例是我正在查看的网格 它表示为二维矩阵 对象是 0 是对象可以移动到的空白空间 1 是对象无法跳过或继续的墙壁 如果该对象只能水平或垂直移
  • Javascript 对象数组和 indexOf 的奇怪之处

    不太明白这里发生了什么 给定数组 arr first name Dan last name Woodson id 1 first name Jen last name Woodson id 2 first name Yoshi last n
  • 在特定变量上禁用 GCC“可能未初始化就使用”

    我在堆栈变量上收到此警告 warning object member may be used uninitialized in this function 在这种情况下 我不希望强制初始化只是为了消除警告 因为它会消耗 CPU 周期 该变量
  • 根据值降序对 Map 进行排序 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Java 中对 Map 的值进行排序 https stackoverflow com questions 109383 how to sort a mapkey value on the va
  • 如何取消注册设置为 jQuery.ajaxStart() 函数的处理程序?

    我尝试做 ajaxStart function 但它不是取代它 而是附加的 如果我理解的话 你想删除ajaxStart来自元素的处理程序 如果是这样 只需使用 jQueryunbind 因为处理程序是作为事件附加的 selector unb
  • 将 Xpath 转换为 CSS 选择器

    我正在努力将以下 Xpath 转换为 CSS form id giftcard form div 3 div button 我知道我可以将 Xpath 用于我的 selenium JS 但由于某些奇怪的原因 它在我的情况下不起作用 我成功地
  • 私有继承、友元和异常处理

    当类 A 私有地继承自类 B 时 意味着 B 是 A 的私有基类子对象 但对于友元来说不是这样 对于友元来说 它是公共子对象 当有多个 catch 处理程序时 第一个匹配的处理程序 即 如果异常类型可以隐式转换为处理程序的参数类型 将被调用
  • Excel 在 CSV 导出中导出数百个空列

    在开始之前 我使用的是 Excel for Mac 2011 我在使用特定的 Excel 电子表格时遇到问题 当我将任何活动工作表导出为 CSV Windows CSV 格式 时 它会导出约 200 个空白列以及 7 或 8 个填充列 我过
  • 使用 jquery 从复选框列表附加文本

    我正在从事 ASP NET 项目 我的任务是附加Checkbox文本到TextBox 复选框的文本从数据库值绑定复选框列表 protected void prbtn Click object sender EventArgs e strin
  • C# 中的 WinForms Aero 向导?

    我正在寻找在 WinForms 中实现一个向导 C notWPF 我希望它符合 Aero Wizard 指南 谁能指点我一些示例代码吗 Codeplex 上有两个项目 航空玻璃供应商 http aeroglassprovider codep
  • 有没有类似Solr分析工具的Elasticsearch插件?

    Solr 内置了 分析画面 https cwiki apache org confluence display solr Analysis Screen 这有助于调试特定字段类型的分词器和过滤器之间的相互作用 ElasticSearch 有
  • 如何使用 AngularJS 指令中的编译函数来重复服务中的元素

    请有人告诉我需要做什么才能在指令中呈现存储在服务中的数组中的新元素 在下面的示例中 来自服务的警报显示每个新元素都已添加到 elements 数组中 但是如何使指令在页面上显示这些新元素呢 我尝试阅读有关的所有内容compile指令中的函数