如何从Angular指令中调用函数

廷伯林斯

我正在尝试从指令模板中调用函数,以将时间转换为可读的内容。我目前正在查看<script>document.write(convertTime({{hour.time}}));</script>实际的转换时间。没有JS错误。

指示:

.directive('hourly', function() {
    return {
        scope: true,
        restrict: 'E',
        template: '<div class="hourly_container row" ng-repeat="hour in weather.data" ng-if="(($index % 3) == 0)">' +
            '<div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">Time: <script>document.write(convertTime({{hour.time}}));</script></div>' +
            '<div class="weather_block hourly col-xs-8 col-sm-8 col-md-8 col-lg-8">' +
            '<canvas id="weather_icon_{{$index}}" width="128" height="128"></canvas><br />' +
            '<span>Temp: {{hour.temperature}}  </span><br />' +
            '<span> {{hour.summary}} </span><br />' +
            '<span>Humidity: {{hour.humidity}} </span><br />' +
            '<span>Pressure: {{hour.pressure}} </span><br />' +
            '</div>' +
            '</div>'
    }
});

功能:

function convertTime(time) {
    console.log("in convert time");
    var d = new Date(time * 1000);
    var hours = d.getHours()
    var minutes = d.getMinutes()

    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    var suffix = "AM";
    if (hours >= 12) {
        suffix = "PM";
        hours = hours - 12;
    }
    if (hours == 0) {
        hours = 12;
    }

    return "<span>" + d.getMonth() + " " + d.getDay() + "</span> <br />" + "<span>" + hours + ":" + minutes + " " + suffix + "</span";
}

我敢肯定有正确的方法可以做到这一点,但这不是。您可以看到我正在尝试使用此示例进行的操作。

p

你有几个问题。我不确定您要如何处理返回的数据,但我会让您解决。我还删除了指令中的某些内容,只是为了获得对convertTime服务的调用。

柱塞

为了调用该函数,您应该将其放入服务中(在这种情况下为工厂)。(我稍作修改是因为您在调用Date时做错了一些事情):

.factory('myFactory', function() {
  return {
    convertTime: function() {
    console.log("in convert time");
    var d = new Date();
    var hours = d.getHours()
    var minutes = d.getMinutes()

    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    var suffix = "AM";
    if (hours >= 12) {
        suffix = "PM";
        hours = hours - 12;
    }
    if (hours === 0) {
        hours = 12;
    }

    return "<span>" + d.getMonth() + " " + d.getDay() + "</span> <br />" + "<span>" + hours + ":" + minutes + " " + suffix + "</span";
    }
  }
})

然后,将工厂注入指令中。

您还应该注意,我也必须注入$ sce,因为您的工厂正在返回要显示的标记字符串。默认情况下,Angular保护我们免受呈现潜在有害代码的侵害。如果您是在内部生成此html而用户无法插入任何内容,则可以使用$ sce告诉angular我们信任这一段代码。然后,您需要在要插入该代码的div标签中使用ng-bind-html,否则它将呈现为纯文本而不是html。

.directive('hourly', function(myFactory, $sce) {
    return {
        scope: true,
        restrict: 'E',
        template: '<div class="hourly_container row">' +
            '<div class="col-xs-4 col-sm-4 col-md-4 col-lg-4" ng-bind-html="convertTime">Time: {{convertTime}} </div>' +
            '<div class="weather_block hourly col-xs-8 col-sm-8 col-md-8 col-lg-8">' +
            '<canvas id="weather_icon_{{$index}}" width="128" height="128"></canvas><br />' +
            '<span>Temp: {{hour.temperature}}  </span><br />' +
            '<span> {{hour.summary}} </span><br />' +
            '<span>Humidity: {{hour.humidity}} </span><br />' +
            '<span>Pressure: {{hour.pressure}} </span><br />' +
            '</div>' +
            '</div>',
            link: function(scope) {
              scope.hour = {
                temperature: 97,
                summary: 'some text here for the summary',
                humidity: 'Really Humid',
                pressure: -92137
              }
              scope.convertTime = $sce.trustAsHtml('Time: ' + myFactory.convertTime())
              }
       }

})

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从指令调用的函数中调用函数

来自分类Dev

如何在指令中调用函数

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

来自分类Dev

如何在Angular.js的index.html页面中的指令中调用函数

来自分类Dev

从指令中调用Angular控制器函数

来自分类Dev

控制器中的Angular.js调用指令函数

来自分类Dev

Angular.js在指令中调用jquery函数

来自分类Dev

Angular.js在指令中调用jquery函数

来自分类Dev

如何从外部控制器的指令中调用函数?

来自分类Dev

如何从链接函数中检查Angular指令中的作用域?

来自分类Dev

Angular指令的链接函数未调用

来自分类Dev

Angular指令的链接函数未调用

来自分类Dev

渲染Angular指令后调用js函数

来自分类Dev

Angular指令不调用父范围函数

来自分类Dev

如何在Angular指令的Link函数中设置CSS样式

来自分类Dev

如何将参数传递给 angular 中的指令函数?

来自分类Dev

在ng中的指令中调用全局函数

来自分类Dev

在ng中的指令中调用全局函数

来自分类Dev

从子指令中调用父指令中的函数

来自分类Dev

如何从控制器调用指令函数?

来自分类Dev

从$ rootScope中的指令调用函数-AngularJS

来自分类Dev

AngularJS在指令模板中调用通用函数

来自分类Dev

从$ rootScope中的指令调用函数-AngularJS

来自分类Dev

从子指令调用函数并使用父指令中的变量

来自分类Dev

Angular 2-如何访问指令并在其中调用成员函数

来自分类Dev

Angular JS-在外部控制器中调用指令函数

来自分类Dev

如何从指令的控制器调用链接函数中定义的范围方法

来自分类Dev

如何使用angularjs中的指令添加的HTML使用$ scope调用函数

Related 相关文章

  1. 1

    如何从指令调用的函数中调用函数

  2. 2

    如何在指令中调用函数

  3. 3

    Angular JS:如何在Angular指令中从控制器的链接内部调用函数

  4. 4

    Angular JS:如何在Angular指令中从控制器的链接内部调用函数

  5. 5

    如何在Angular.js的index.html页面中的指令中调用函数

  6. 6

    从指令中调用Angular控制器函数

  7. 7

    控制器中的Angular.js调用指令函数

  8. 8

    Angular.js在指令中调用jquery函数

  9. 9

    Angular.js在指令中调用jquery函数

  10. 10

    如何从外部控制器的指令中调用函数?

  11. 11

    如何从链接函数中检查Angular指令中的作用域?

  12. 12

    Angular指令的链接函数未调用

  13. 13

    Angular指令的链接函数未调用

  14. 14

    渲染Angular指令后调用js函数

  15. 15

    Angular指令不调用父范围函数

  16. 16

    如何在Angular指令的Link函数中设置CSS样式

  17. 17

    如何将参数传递给 angular 中的指令函数?

  18. 18

    在ng中的指令中调用全局函数

  19. 19

    在ng中的指令中调用全局函数

  20. 20

    从子指令中调用父指令中的函数

  21. 21

    如何从控制器调用指令函数?

  22. 22

    从$ rootScope中的指令调用函数-AngularJS

  23. 23

    AngularJS在指令模板中调用通用函数

  24. 24

    从$ rootScope中的指令调用函数-AngularJS

  25. 25

    从子指令调用函数并使用父指令中的变量

  26. 26

    Angular 2-如何访问指令并在其中调用成员函数

  27. 27

    Angular JS-在外部控制器中调用指令函数

  28. 28

    如何从指令的控制器调用链接函数中定义的范围方法

  29. 29

    如何使用angularjs中的指令添加的HTML使用$ scope调用函数

热门标签

归档