如何在只接受字符串值/文字的HTML属性中调用函数?

时间:2015-04-01 04:09:55

标签: javascript html angularjs function pug

我在调用此jade文件中属性中的函数时遇到问题:

test.jade

script
    - function myFunction(str) {
        some regex on str, say, to filter out all full stops and 
        return the new string.
    }

    .container-fluid
        .row
            .col-md-12
                div(ng-repeat='thing in things')
                    button(popovertext='{{thing.description()}}', popover-trigger='mouseenter')

popovertext属性中的表达式打印字符串就可以很好地处理事物中的每个事物(如ng-repeat所做)而不调用函数。但据我所知,popovertext只接受字符串值,所以当我做了像

这样的事情
                    button(popovertext='myFunction({{thing.description()}})')

它实际上打印出myFunction(....原始字符串....),这基本上意味着它根本无法识别我的功能。我应该在这个jade文件中调用该函数,而不是在另一个.js文件中调用该函数,因为显然任何没有'ng-'的属性根本不与控制器通信?

我怎么可能绕过这个?


另外,我很困惑,我应该在我的代码行前加上“ - ”。我是否正确地说,对于玉,我需要它为var,函数和返回?

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种可能方法是为所有事物对象设置名为descriptionString的字段。您可以在控制器中执行此操作:

angular.forEach(things, function(thing){
  thing.descriptionString = thing.description();
});

其余的很容易:

button(popovertext='{{thing.descriptionString}}', popover-trigger='mouseenter')