简单的问题,我想将我的控制器范围内的函数应用于表达式。
这是我控制器中的HTML
<p><span ng-if="paginaDetail.pubdate !== '' ">Vanaf {{paginaDetail.pubdate}}</span></p>
这是我的javascript
$scope.formatMysqlTimestampToHumanreadableDateTime = function(sDateTime){
sDateTime = sDateTime.toString();
var sHumanreadableDateTime = sDateTime.substring(8, 10) + "/" + sDateTime.substring(5, 7) + "/" + sDateTime.substring(0, 4);
sHumanreadableDateTime += " " + sDateTime.substring(11, 13) + ":" + sDateTime.substring(14, 16);
return sHumanreadableDateTime;
};
我想要做的是将 formatMysqlTimestampToHumanreadableDateTime 应用于 paginaDetail.pubdate ,就像这样
<p><span ng-if="paginaDetail.pubdate !== '' ">Vanaf {{formatMysqlTimestampToHumanreadableDateTime(paginaDetail.pubdate)}}</span></p>
或者
<p><span ng-if="paginaDetail.pubdate !== '' ">Vanaf {{paginaDetail.pubdate|formatMysqlTimestampToHumanreadableDateTime}}</span></p>
但两种方式都不正确。
第一种方法有效,但在控制台上我发现了这个错误
错误:[$ interpolate:interr] http://errors.angularjs.org/1.2.16/ $插值/ INTERR P0 =托特%20%7B%7BformatMysqlTimestampToHumanreadableDateTime(paginaDetail.endpubdate)%7D%7D&安培; P1 =类型错误%3A%20sDateTime%图20是%20undefined 吨/&LT; @ http://mysite.local/js/libs/angular.min.js:6:443 G / R @ http://mysite.local/js/libs/angular.min.js:78:354 。YD /这$ gethttp://mysite.local/js/libs/angular.min.js:106:161 。YD /这$ gethttp://mysite.local/js/libs/angular.min.js:109:285 ˚F@ http://mysite.local/js/libs/angular.min.js:71:234 ˚F@ http://mysite.local/js/libs/angular.min.js:75:408 VE / HTTP://mysite.local/js/libs/angular.min.js:76:457
而第二个根本不起作用。
你有什么建议吗?非常感谢。
答案 0 :(得分:5)
如果我可以为基于控制器的操作提供替代选项......对于filter
来说这看起来很棒这个想法是在将输入放入像{{myDate|format}}
这样的html时使用过滤输入。
过滤器的定义如下:
myApp.filter('format', function () {
return function (input) {
//your date parser here
};
});
或者你想用它做什么。通过这种方式,您可以重复使用它,而无需将该功能放在您希望使用它的每个控制器中。
这是您可以展开的fiddle,以帮助您前进。
编辑仔细查看错误我认为您的实际问题是.pubdate
未填充(TypeError: sDateTime is not defined
)。尝试在函数中放置断点或查看控制台说的内容。
答案 1 :(得分:4)
实际上您的示例{{func(param)}}
工作正常:http://jsfiddle.net/HB7LU/4418/。问题出在其他方面。试着说明你的问题。
答案 2 :(得分:3)
这个问题已经有了正确的答案,但这可能有助于更好地理解它。对于问题&#34; 如何在Angular表达式中运行/应用函数&#34;,我可以这样介绍,
将您的函数分配给$ scope.something并运行它。例如:强>
控制器内的JavaScript:
$scope.printMe= function(text){
return text;
}
HTML(表达式):
<p>{{printMe("Hello!")}}</p>
您的Hello!
代码
<p>