使用AngularJs动态指令进行自定义视图

马修·帕奎特(Mathieu Paquette)

我正在使用服务器端生成的JSON使用Angular 1.2.29的不同指令填充自定义视图。考虑到性能和良好做法,我有几个问题要问,这样做的正确方法是什么。

  • 5种不同类型的指令将涉及约30个项目
  • JSON将保持大约90%的比例,并且必须在用户选项卡切换之间重新生成所有DOM元素,这有点不好。
  • 我想避免创建手表,但是由于我使用的是1.2.X,因此我应该考虑使用角度一次
  • 由于我打算在同一时间重用同一指令,所以我应该考虑cloneAttachFn

function processItems(items) { angular.forEach(items, function(item) { switch(item.type) { case 'directive1': var newDirective = angular.element('<directive-one></directive-one>'); newDirective.attr('value', item.value); var compiledHtml = $compile(newDirective)(scope); element.append(compiledHtml); break; case 'directive2': var newDirective = angular.element('<directive-two></directive-two>'); newDirective.attr('value', item.value); var compiledHtml = $compile(newDirective)(scope); element.append(compiledHtml); break; } }) }

我创建了一个Plunker,向大家展示我目前的方法。欢迎评论和回答!https://plnkr.co/edit/Za4ANluUkXYP5RCcnuAb?p=preview

基因

在生成动态过滤器类型功能时,我已经经历过很多次此问题。您的代码有效,但我认为这是过度设计的,而且可读性很差。不需要GenericItems指令。我将尝试将功能移至视图,并明确说明类型更改时会发生什么。这是我作为柱塞的解决方案

控制器

<div ng-controller="appCtrl as app">
    <p>{{app.name}}</p>
    <button ng-click="app.add1()">Directive 1</button>
    <button ng-click="app.add2()">Directive 2</button>
    <button ng-click="app.remove()">Remove</button>
    <div ng-repeat="item in app.items">
      <directive-one value="item.value" ng-if="item.type==='directive1'"></directive-one>
      <directive-two value="item.value" ng-if="item.type==='directive2'"></directive-two>
    </div>
</div>

app.js

app.controller('appCtrl', function() {

  var vm = this;
  vm.items = [];

  vm.name = 'Dynamic directive test';
  vm.add1 = function() {
    vm.items.push({type: 'directive1', value: Math.random()})
  };

  vm.add2 = function() {
    vm.items.push({type: 'directive2', value: Math.random()})
  };

  vm.remove = function() {
    vm.items.pop();
  };
});

app.directive('directiveOne', function() {
  return {
    scope: {
      value: '='
    },
    restrict: 'E',
    template: '<p>d1: {{value}}</p>'
  }
});

app.directive('directiveTwo', function() {
  return {
    scope: {
      value: '='
    },
    restrict: 'E',
    template: '<p>d2: {{value}}</p>'
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS动态自定义指令问题

来自分类Dev

使用自定义指令与angularjs进行验证

来自分类Dev

使用自定义指令与angularjs进行验证

来自分类Dev

AngularJS:具有多个模板的动态自定义指令

来自分类Dev

AngularJS 自定义生成指令动态属性绑定

来自分类Dev

AngularJS自定义指令

来自分类Dev

在angularjs中使用自定义指令进行格式化

来自分类Dev

使用Angular的orderBy指令进行自定义排序

来自分类Dev

使用指令绑定angularjs中的自定义事件

来自分类Dev

使用angularjs的电话格式的自定义指令

来自分类Dev

在自定义AngularJS指令中使用$ timeout

来自分类Dev

AngularJS:无法从自定义指令属性中检索值以在自定义指令中进行解析

来自分类Dev

AngularJS如何在自定义指令标签内使用ng-model,动态设置控制器?

来自分类Dev

angularjs自定义指令值更改

来自分类Dev

AngularJS自定义指令双向绑定

来自分类Dev

选择的AngularJS自定义指令

来自分类Dev

angularjs自定义指令重复属性

来自分类Dev

多个自定义指令angularjs

来自分类Dev

AngularJS:自定义指令内的ngView

来自分类Dev

AngularJs 多个自定义指令失败

来自分类Dev

使用AngularJs在ngTable中进行自定义排序

来自分类Dev

使用AngularJs在ngTable中进行自定义排序

来自分类Dev

自定义“使用严格”指令

来自分类Dev

如何使用自定义指令。

来自分类Dev

自定义指令

来自分类Dev

使用ui-router时,自定义指令在嵌套视图中无效

来自分类Dev

使用ControllerAs和自定义指令时视图未更新

来自分类Dev

如何使用动态名称创建Angular 2自定义属性指令?

来自分类Dev

如何在ui视图中显示自定义指令?

Related 相关文章

热门标签

归档