编程角模板?(Programmatic Angular Templates?)

2019-10-30 09:33发布

我正在使用Angular.js项目,以及基于jQuery的自定义控件触发与该事件涉及到数据的事件; 我希望能够聆听到角(很容易的),这种情况下,然后显示与绑定到数据模板的对话框,这样当值对话框中改变时,会自动在对象反映,与事件一起发送。

我不知道如何在角度,如何呈现上绑定到一个数据对象的需求的模板做到这一点。

例如; 控制火灾“点击”以被点击的视觉对象的数据。 我想角听,然后从文件(如“menuDialog.html”)呈现模板的内容,这样我可以然后将其放置在那里我点击(我能做配售)在屏幕上。

我读过指令是要走的路,但是这似乎是处理自定义HTML标签或属性。 将同样的应用在这里,我将如何编程调用指令,将其绑定数据和获得的内容放在页面上?

我想确切地知道如何在骨干+车把实现这一点,但我不是太熟悉角。

谢谢

Answer 1:

控制器:

.controller('MyCtrl', function($scope) {
  $scope.html = '<div>testing</div>'; // or use $http to fetch remotely
})

标记:

<div html-template="html"></div>

该指令:

.directive('htmlTemplate', function($compile) {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      element.click(function() {
        var html = scope.$eval(attrs.htmlTemplate);
        var newElement = $compile(html)(scope);
        <do stuff with newElement (it's a jQuery element)>
      });
    }
  }
})

需要注意的是,在HTML任何指示将调用期间处理$compile



Answer 2:

根据我这里的问题的理解是,你需要做什么。

  1. 创建一个指令来处理由定制的jQuery控制引发的事件。 角本身支持事件的指令就像ng-click ,但我不知道它是否会在情况下,你的jQuery控件生成自定义标记工作。
  2. 您控制器应该包含一个属性(javasript对象),其中包含你需要显示弹出一个+布尔属性的模型来表示何时显示模式

    $ scope.popupModel = NULL; $ scope.showPopup = FALSE;

  3. 你的HTML应该用ng-include你包括HTML模板。 ng-include同时支持从服务器,并使用脚本标记客户端模板。

  4. 模板的HTML代码应结合物业popupModel

  5. 在指令中定义添加使用结合两种方法的控制器范围属性popupModel和showPopup对象散列语法范围属性。 就像是

    指令( 'htmlTemplate',函数($编译){

      return { restrict: 'A', scope:{model=@popupModel,show=@showPopup}, link: function (scope, element, attrs) { element.click(function(e) { model=e.model; show-true; }); } }) 
  6. 弹出窗口应该得到所示,每当shopPopup是真实的。 这是可以做到的ng-show

我建议你开始挖更深的指令和ng-include



文章来源: Programmatic Angular Templates?