在angular.module('xxx')中访问$ locale。值

时间:2013-05-10 10:49:59

标签: angularjs date-format angular-ui

我正在使用angular-ui:s date指令(uiDate)并需要配置它。我可以这样做:

app.value('ui.config', {
    date: {
        dateFormat: 'yy-mm-dd', // <-- I want to use $locale.shortDateFormat
        changeMonth: true,
        changeYear: false
    }
});

其中app是我的应用程序模块。

我想要做的是从angulars $ locale对象定义dateFormat,使用i18n包含我的文化特定日期格式。

app的value属性在那时似乎无法访问$ locale,所以我觉得这是错误的做法。

如何从locale-object到我的指令提供dateformat和其他东西,而不必修改ui-date的源代码(因为它是我项目的外部依赖项)。

我可以通过在控制器中设置此对象来解决此问题,但这不是我想要的。这是一个应该适用于我所有控制器的配置。

2 个答案:

答案 0 :(得分:0)

AngularUI目前正在进行一些重构,这会稍微改变一下。

无论如何,您始终可以将dateFormat属性传递给uiDate内联,它将与全局配置合并。我不知道是否可以按照建议在app.run中设置.value(),但我认为.value()应该很容易被覆盖。您甚至可以尝试修改对象,因为理论上会保留引用(取决于执行指令注入函数的时间)。

对不起它没什么用处。

答案 1 :(得分:0)

您可以使用bootstrap来执行此操作。你甚至不需要在“内部”角度来使用它。

有关bootstrap的更多信息:http://docs.angularjs.org/guide/bootstraphttp://docs.angularjs.org/api/angular.bootstrap

只需注意......在网站上导航时,将版本设置为1.2,以便您可以看到评论。这非常有帮助。

<强> HTML

<ul id="result">

</ul>

<强>的Javascript

var locale = angular.bootstrap(function ($locale) { }).get('$locale'),
    html = '';


for(var i = 0; i < locale.DATETIME_FORMATS.MONTH.length; i++) {
    html += '<li>' + locale.DATETIME_FORMATS.MONTH[i] + '</li>';
}

$('#result').html(html);

jsfiddle:http://jsfiddle.net/82aRW/