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

如何在angularjs中编写指令

骆昊阳
2023-03-14
问题内容

我喜欢使用指令制作自定义组件。我检查了很多教程,它使我感到困惑,任何人都可以解释指令的工作原理。我计划制造的组件是

<shout-list></shout-list>

呼喊列表的模板将像这样

<div class="shout" ng-repeat="shout in shouts">
    <p>{{shout.message}}</p>
    <img src="media/images/delete.png" width="32" height="32" ng-click="deleteShout({{$index}},'{{shout._id}}')"/>
</div>

问题答案:

这是您的指令,带有一些内联注释:

angular.module( 'directives', [] ).directive( 'shoutList', function () {
  return {
    restrict: 'E', // allow as an element; the default is only an attribute
    scope: {       // create an isolate scope
      shouts: '='  // map the var in the shouts attribute to this scope
    },
    templateUrl: 'templates/shoutList.html', // load the template file
    controller: function ( $scope ) {
      // we declare a your function for use in the view
      $scope.deleteShout = function ( idx, id ) {
        // do whatever
      };
    }
  };
});

和模板文件

<div class="shout" ng-repeat="shout in shouts">
  <p>{{shout.message}}</p>
  <img src="media/images/delete.png" width="32" height="32" 
    ng-click="deleteShout({{$index}},'{{shout._id}}')" />
</div>

现在,您可以在代码中使用它,如下所示:

控制器:

.controller( 'MainCtrl', function ( $scope ) {
  $scope.myShouts = // ...
});

视图:

<shout-list shouts="myShouts"></shout-list>

希望这可以帮助!



 类似资料:
  • 问题内容: 下划线库提供了一个反跳功能,该功能可防止在设定的时间内多次调用该功能。他们的版本使用setTimeout。 我们如何用纯AngularJS代码做到这一点? 此外,我们可以利用$ q样式的承诺在反跳周期之后从调用的函数中检索返回值吗? 问题答案: 这是此类服务的工作示例:http : //plnkr.co/edit/fJwRER?p=preview。它创建了一个延迟对象,该对象将在最终调

  • 问题内容: 我想在3个地方使用相同的HTML模板,只是每次使用不同的模型。我知道我可以从模板访问变量,但是名称会有所不同。 有没有办法将模型传递给ngInclude? 这是我想要实现的,当然add-variable属性现在不起作用。然后,在我包含的模板中,我将访问detailsObject及其属性。 如果我使用ng-include的方法不好,还有其他应该尝试的方法吗? 问题答案: 注意:这不是我的

  • 问题内容: 我正在做的事情非常精简,可以解决问题。 我有一个简单的。每当您单击一个元素时,它都会添加另一个元素。但是,需要先对其进行编译才能正确呈现。 我的研究使我走向了。但是所有示例都使用了一个复杂的结构,我真的不知道如何在这里应用它。 小提琴在这里:http : //jsfiddle.net/paulocoelho/fBjbP/1/ JS在这里: Josh David Miller的解决方案:

  • 问题内容: 有没有一种方法可以在指令内部设置输入有效性?指令模板中存在的输入。 可以说我有模板: 我的指令就像: 我不能用表单包装它,因为其背后的思想是允许用户将此输入包含在用户的表单中。 问题答案: 您需要检索与输入关联的NgModelController实例。然后调用此对象,指定验证密钥(必需,最小长度,自定义密钥等)。它看起来像这样: 这里最重要的部分是如何获取NgModelControll

  • 问题内容: 我需要从指令内的回调中修改根范围属性。但是,该指令位于由switch指令创建的内部范围内。 HTML JavaScript 小提琴:http://jsfiddle.net/nJ7FQ/ 我的目标是能够在“选定区域”中显示“新值”。我该如何完成我想做的事情?我究竟做错了什么? 此外,我正在尝试制作一个组件。有没有办法做到这一点,但要隔离范围? 问题答案: 我更新了小提琴,基本上不得不去父

  • 问题内容: 谁能告诉我如何在另一个angularJS指令中包含一个指令中的控制器。例如我有以下代码 通过所有帐户,我应该能够使用addProduct指令访问控制器,但是我不能。有更好的方法吗? 问题答案: 我很幸运,并在对问题的评论中回答了这个问题,但是为了完整起见,我发布了完整的答案,因此我们可以将此问题标记为“已回答”。 这取决于您要通过共享控制器来完成的工作。您可以共享同一控制器(尽管实例不