javascript - 关于 AngularJS fiddle 的解释

标签 javascript angularjs

我对这个 fiddle 有几个问题:

Fiddle

这是这个 Fiddle 的 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)我注意到 Fiddle 的作者使用函数作为 Controller 而不是使用 app.controller(...) 然后使用 [ Controller ].prototype。是否建议使用这种方法?我知道我不能问哪种方式更好,因为我有一些关于个人风格的感觉。

2) 在sort 函数中,我看到(关键)词predicate。这是什么意思?这是从哪里来的?我以前从未见过这个。

3)在这个 fiddle 的 HTML 部分中,我注意到这一行:ng:repeat="friend in Friends.$orderBy(sort,verse)。这不是那么困难的一行,但我不是熟悉语法$orderBy()表示法。您总是可以访问该方法吗?该方法来自哪里?

最佳答案

当您使用该模式时它很有用。在进行一些棘手的数据建模或 Controller 继承时,该模式非常有用。不过,大多数时候我个人使用数组 DI 模式。

Minko's Blog Post应该把事情弄清楚。另请注意,在标题“Explicit Dependecy Injection”下,有人插入了这个小注释:“最佳实践:使用上面显示的数组注释。”

PS:我看到一些人在 Controller 的末尾添加了解析函数。然后使用 $routeProvider 在 app.config 中调用该解析函数——(这更干净,但稍微更令人困惑。正如 @Sergey Moiseev 指出的,如果你是一名顾问,那么你可能会更倾向于可读性方面.不过,如果您有一个开发团队,那么你们可以坐下来讨论。

关于javascript - 关于 AngularJS fiddle 的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246192/

相关文章:

javascript - 使用元素插入 ng-view 的 ng-view 的 Angular 动画父 div

javascript - 在创建/更新时,使用 $state.go ('main.myEntries' ),但直到重新加载更新或新内容才显示

javascript - 对于文件选择器 openFileChooser() 方法不调用 Kitkat 4.4 的 WebChromeClient

javascript - Google Apps 脚本 - 复制脚注内容时保留链接

javascript - 不允许在字段中输入不需要的字符

angularjs:ng-message 总是显示

javascript - 如何在执行函数后重新加载 http.get 请求

javascript - 捕捉 webhook node.js

javascript - Uint16Array 到 Uint8Array

javascript - html 中用于更改 css 图像标签的按钮功能?