假设我有一些具有相同原型的对象,并且我想在 Angular 模板中自定义它们的显示。我知道我可以创建自己的过滤器,然后像这样使用它:
<p>{{anObjectOfProtoP | myCustomFilter}}</p>
或附加到 $scope 的函数:
<p>{{myCustomFunction(anotherObjectOfProtoP)}}</p>
我的问题是:是否可以实现类似的功能而无需每次都显式指定渲染函数?理想的解决方案是如果角度检查功能toAngularString
在物体内部{{}}
,然后在模板中使用它的返回值。
换句话说,我希望 Angular 能够做到
function (o) {
if (typeof o.toAngularString === 'function') return o.toAngularString();
return o;
}
里面的每一个物体{{}}
.
取决于你是否使用{{ ... }}
or ng-bind
语法,将.toJSON
和.toString
将调用对象上的函数来确定其表示形式。因此,您可以提供您想要的表示形式.toString
or .toJSON
你的对象的功能。
调用函数的这种差异使得一些问题, 实际上。
另一种方法是编写自己的指令my-toangularstr
像这样:
app.directive('myToangularstr', function () {
return {
scope: true,
template: '<span class="my-angular-value">{{ val.toAngularString() }}</span>',
link: function (scope, elem, attrs) {
scope.$watch(attrs['myToangularstr'], function (newVal) {
if (typeof newVal !== 'undefined') {
scope.val = newVal;
}
})
}
}
})
显示所有三种方法的工作演示是here.
我认为这是使用 Angular 外部 API 所能得到的最接近的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)