(五下下)$timeout方法,控制器与作用域

$timeout方法

angular.js的$timeout指令对window.setTimeout做了一个封装,它的返回值是一个promise对象.当定义的时间到了以后, 回调函数就会被执行.

如果需要取消一个timeout,调用 timeout.cancel(promise) timeout(fn, [delay], [invokeApply]);

fn: 回调函数(必填)
delay: number类型.延迟的时间(非必填),如果不填,表示等线程空下来以后就执行.比如当页面被渲染完成后.
invokeApply: 布尔值.是否需要进行脏值检测(非必填),不填默认为true, 则fn回调会被包在 scope. apply()中执行
返回值: 返回一个promise对象.当定义的时间到了以后,这个promise对象就会被执行
执行后的值就是fn回调函数的返回值
取消timeout: $timeout.cancel([promise])

  • promise: 一个由$timeout()所创建的对象。调用cancel()以后,这个promise对象就会被取消。
  • 返回值: 如果 $timeout()的回调还没有被执行的时候就执行cancel()方法,那么$timeout的回调就不会被执行。

控制器与作用域
对作用域中的数据的修改会导致所有依赖于该数据的值都被修改。
使用一个单块控制器
1. 在body元素(或包含了所有数据绑定和指令的元素上)使用ng-controller指令,该控制器应用于所有的HTML元素。
使用同一个控制器创建多个视图:
2. 在同一个应用程序中创建多个视图并复用同一个控制器。 不同的视图能够以不同的方法对同一份数据和功能进行展示。

在 `ent` 框架中,可以在 `schema` 目录下的实体定义文件中定义钩子方法。下面是一个示例: ```go package schema import ( "context" "fmt" "crypto/md5" "entgo.io/ent" "entgo.io/ent/schema/field" "entgo.io/ent/schema/mixin" ) // UserMixin 定义一个 User 实体的混合类型 type UserMixin struct { mixin.Schema } // Fields 定义 UserMixin 的字段 func (UserMixin) Fields() []ent.Field { return []ent.Field{ field.String("name").Unique(), field.String("password"), } } // Hooks 定义 UserMixin 的钩子 func (um UserMixin) Hooks() []ent.Hook { return []ent.Hook{ // 在创建或更新 User 时,对密码进行 MD5 加密 um.EncryptPassword(), } } // EncryptPassword 是一个钩子函数,用于对 User 实体的密码字段进行 MD5 加密 func (UserMixin) EncryptPassword() ent.Hook { return func(next ent.Mutator) ent.Mutator { return ent.MutateFunc(func(ctx context.Context, m ent.Mutation) (ent.Value, error) { if password, ok := m.Field("password"); ok { // 如果密码字段不为空,则进行 MD5 加密 if p, ok := password.(string); ok && p != "" { mp := fmt.Sprintf("%x", md5.Sum([]byte(p))) m.SetField("password", mp) } } return next.Mutate(ctx, m) }) } } ``` 上面的示例中,定义了一个 `UserMixin` 混合类型,它包含了一个名为 `EncryptPassword` 的钩子函数。这个钩子函数用于对 `User` 实体的 `password` 字段进行 MD5 加密。 在 `Hooks()` 方法中,使用 `um.EncryptPassword()` 方法来注册这个钩子函数,表示在创建或更新 `User` 实体时,会自动调用这个钩子函数。 这个钩子函数的具体逻辑是,当执行 `Mutation` 的 `Field()` 方法时,如果字段名为 `password`,且字段值不为空,则对字段值进行 MD5 加密,并使用 `Mutation` 的 `SetField()` 方法来设置加密后的值。最后,调用 `next.Mutate()` 方法来继续执行下一个钩子函数或实体操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值