使用ES5编写Angular v2(3)”迭代处理”

※现在不再推荐使用这种方法。

上次我尝试了Angular v2的双向绑定。

让我们参考Angular v2官方网站上的TypeScript示例来进行循环处理。

将list-component添加到主要的HTML中。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.17/Rx.umd.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.17/angular2-polyfills.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.17/angular2-all.umd.dev.js"></script>
        <script src="components/list-component/list-component.js"></script>
    </head>
    <body>
        <list-component></list-component>
    </body>
</html>

将数组heroes添加到组件的JavaScript中。

(function(app) {
    app.ListComponent = ng.core
    .Component({
        selector: 'list-component'
    })
    .View({
        templateUrl: 'components/list-component/list-component.template.html'
    })
    .Class({
        constructor: function() {
            this.heroes = ["Mr. Nice",
                           "Narco",
                           "Bombasto",
                           "Celeritas",
                           "Magneta",
                           "RubberMan",
                           "Dynama",
                           "Dr IQ",
                           "Magma",
                           "Tornado"
                          ];
        }
    });
    document.addEventListener('DOMContentLoaded', function() {
        ng.platform.browser.bootstrap(app.ListComponent);
    });
})(window.app || (window.app = {}));

在模板中,我们使用ngFor来进行重复处理。

<li *ngFor="let hero of heroes">
    {{hero}}
</li>

↓这是本次的可运行示例:https://codepen.io/puku0x/pen/ZWNLgx

据说ngFor前面的*表示将

  • 元素(以及其子元素)作为模板。
    如果对let不熟悉,可以用var来替换。

    总结

    使用Angular v2的ngFor代替1.x系列中存在的ngRepeat。

    <li ng-repeat="hero in $ctrl.heroes track by $index">
        {{hero}}
    </li>
    

    进行了如上所述的重复处理。

    在我个人看来,我很高兴地看到不再有“对于字符串数组情况,必须使用track by”的限制。但你们觉得呢?

    下一次我想尝试一下点击事件。

广告
将在 10 秒后关闭
bannerAds