我想将显示值的格式传递给角度组件。
例如:
format="'(utc, offset) location (tz)'" === '(UTC -04:00) New York (EDT)'
或
format="'(tz, offset) location'" === '(EDT -04:00) New York'
我们的想法是,该值将按照给定的格式显示,包括括号。 我猜想实现这一目标的最佳方法是获得所需格式的数组? 因此,给定以下字符串,如何生成以下数组:
'(utc, offset) location (tz)' === ['(', 'utc-code', 'offset-hours', ')', 'location', '(', 'tz-code', ')'];
'(tz, offset) location' === ['(', 'tz', 'offset', ')', 'location']
答案 0 :(得分:2)
您可以使用组件inline unsigned U(float f) {
union {
unsigned u;
float f;
} t;
t.f = f;
return t.u;
}
来传递值。这里将在每个摘要周期中调用binding
,这提供了检测绑定更改并对其进行操作的机会。
我用正则表达式编写了一个简单的逻辑来显示输入格式的数据。希望这种方法有助于代替您的阵列方法。
$doCheck

angular.module('app',[])
.controller('appCtrl', function($scope){
$scope.format = '(offset) location (tz)';
})
.component('myComponent', {
template: '<div>{{$ctrl.formattedValue}}</div>',
controller: myComponentCtrl,
bindings: {
format: '='
}
});
function myComponentCtrl(/*your DI goes here*/){
console.log('log from component: format->'+this.format);
var self = this;
this.formattedValue = '';
this.$doCheck = function(){
var sampleDateObject = {
tz: 'CDT',
offset: '-4:00',
location: 'Chicago',
year: 2017
}
self.formattedValue = self.format.replace(/([a-z]+)/gi, function(match){
return sampleDateObject[match]?sampleDateObject[match]:match;
});
};
}
myComponentCtrl.$inject = [/*your DI goes here as string*/];
&#13;