• [AngularJS] Using $parse Service


    $parse is useful when you want to parse an expression and the context is not defined yet.

    For example, I have a table component which allows user to pass in all the row items and define action for each row.

        <ttmd-table
            items="vm.invoices"
            headers="vm.headers"
        >
            <ttmd-actions>
                <ttmd-action
                    if="shouldPay"
                    text="pay"
                    on-click="vm.pay(payload)"
                ></ttmd-action>
            </ttmd-actions>
        </ttmd-table>

    What I want is only if 'shouldPay' is true when display the `ttmd-action`, if not just hide it, so there is "if" attr in the tag.

    But there is one problem to make it works: Because `shouldPay` prop locates on each item, if we use ng-repeat, we would do somthing like this:

    <div ng-repeat="item in items track by $index">
        <ttmd-action
             if="item.shouldPay"
        ></ttmd-action>
    </div    

    But I don't want to make component hard for user to use, so the problem we need to solve here is 

    • parse the expression we passed in with the right context

    So here is $parse come into play:

        shouldDisplay(){
    
            let getter = this.$parse(this.if); // get the expression and conver it to a function
            let context = this.ItemCtrl.getSelectedItem(); // Find the right context
            console.log(context); 
            console.log(getter(context));
            return getter(context); // parse the expression with the right context
        }
  • 相关阅读:
    浅谈Chrome V8引擎中的垃圾回收机制
    selenium反爬机制
    03 HTTP协议与HTTPS协议
    HTTP缓存机制和原理
    python 自动发送邮件
    02 Anaconda的介绍,安装记以及使用
    01 关于jupyter的环境安装
    SQLAlchemy
    django-debug-toolbar
    flask 第十篇 after_request before_request
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5408647.html
Copyright © 2020-2023  润新知