我对这个小提琴有几个疑问:
这是这个小提琴的Javascript代码,我有一些问题:
function Main() {
this.friends = [{
name: 'John',
phone: '555-1212',
age: 10,
date: '11 June 2011'},
{
name: 'Mary',
phone: '555-9876',
age: 19,
date: '12 June 2011'},
{
name: 'Mike',
phone: '555-4321',
age: 21,
date: '13 July 2011'},
{
name: 'Adam',
phone: '555-5678',
age: 35,
date: '14 May 2011'},
{
name: 'Julie',
phone: '555-8765',
age: 29,
date: '15 June 2011'}];
}
Main.prototype = {
sort: function(item) {
if (this.predicate == 'date') {
return new Date(item.date);
}
return item[this.predicate];
},
sortBy: function(field) {
if (this.predicate != field) {
this.predicate = field;
this.reverse = false;
} else {
this.reverse = !this.reverse;
}
},
reverse: false
};
1)我注意到小提琴的作者使用函数作为Controller
而不是使用app.controller(...)
,然后使用[controller].prototype
。是否建议使用这种方法?我知道我不能问哪种方式更好,因为我有一些与个人风味有关的感觉。
2)在sort
函数中,我看到(关键)字predicate
。这是什么意思?这是从哪里来的?我以前从未见过这个。
3)在这个小提琴的HTML部分,我注意到这一行:ng:repeat="friend in friends.$orderBy(sort, reverse)
。一个不那么困难的行,但不熟悉语法$orderBy()
表示法。你总是可以使用这种方法吗?这种方法来自哪里?
答案 0 :(得分:2)
使用该模式时非常有用。在进行一些棘手的数据建模或控制器继承时,该模式非常有用。虽然,大多数时候我个人使用阵列DI模式。
Minko's Blog Post应该清理一下。另请注意,标题为" Explicit Dependecy Injection"有人在这个小纸条中滑倒了:"最佳实践:使用上面显示的数组注释。"
PS:我见过有人将一个resolve函数添加到控制器的末尾。然后使用$ routeProvider在app.config中调用该resolve函数 - (它更清晰但更令人困惑。正如@Sergey Moiseev指出的那样,如果你是一名顾问,那么你可能更倾向于可读性方面但是,如果你有一个开发团队,那么你们可以坐下来谈谈。
答案 1 :(得分:1)