当前位置: 首页 > 面试题库 >

$观看对象

茅鸿宝
2023-03-14
问题内容

我想监视字典中的更改,但是由于某种原因,未调用监视回调。

这是我使用的控制器:

function MyController($scope) {
    $scope.form = {
        name: 'my name',
        surname: 'surname'
    }

    $scope.$watch('form', function(newVal, oldVal){
        console.log('changed');
    });
}

这是小提琴。

我希望每次更改名称或姓氏时都会触发$ watch回调,但是不会发生。

正确的方法是什么?


问题答案:

调用$watchwith true作为第三个参数:

$scope.$watch('form', function(newVal, oldVal){
    console.log('changed');
}, true);

默认情况下,在JavaScript中比较两个复杂对象时,将检查它们是否具有“引用”相等性,即询问两个对象是否引用同一事物,而不是“值”相等性,后者检​​查这些对象的所有属性的值对象是相等的。

根据Angular文档,第三个参数用于objectEquality

objectEquality == true为时,根据angular.equals函数确定watchExpression的不等式。为了保存对象的值以供以后比较,使用了该angular.copy函数。因此,这意味着观看复杂的对象将对内存和性能产生不利影响。



 类似资料:
  • 免责声明:这是我第一次尝试构建MVVM应用程序,我以前也没有使用过vue.js,所以我的问题很可能是一个更根本的问题造成的。 在我看来,我有两种带复选框的块: 类型1:块/复选框 类型2:块/标头/复选框 底层对象的结构如下所示: 我的目标 选择复选框: 用户单击复选框,复选框被选中(selected=true) 将激发一个方法来检查是否需要禁用任何其他复选框(disabled=true)。(如果

  • 概述 MudutvPageDemo 是基于 iOS 平台的观看端SDK,已继承视觉界面。通过简易配置就能直接观看直播,并进行互动。 目前观看页主要功能包含直播观看,聊天互动,点赞,打赏,投票,问卷,竞答红包,红包雨,普通红包等,自定义菜单功能菜单分类包含图文,视频。 阅读对象 本文档面向所有使用该 SDK 的开发人员、测试人员以及对此感兴趣的用户。 开发准备 设备和系统版本 iOS 9.0及以上

  • Android 直播观看端 sdk 概述 MudutvPage 是基于 Android 平台的观看端 SDK,已继承视觉界面。通过简易配置就能直接观看直播,并进行互动。 目前观看页主要功能包含直播观看,聊天互动,点赞,打赏,投票,问卷,竞答红包,红包雨,普通红包等,自定义菜单功能菜单分类包含图文,视频。 阅读对象 本文档面向所有使用该 SDK 的开发人员、测试人员以及对此感兴趣的用户。 开发准备

  • 请求header POST /v2/activities/{频道id}/userRecordList Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请将"{频道id}"替换您需要获取的频道id { "start_ti

  • 问题内容: 我有一个指令可以遍历链接元素的 children 。 但是,尚未将子级加载到DOM中,因为尚未解析其s表达式。 如何确定父指令知道它的DOM树已更改? 我可以使用,但是感觉不可靠。我也可以用代替,但这不能回答问题,也不是我所需要的。 问题答案: 所以这就是我最终要做的事情: 我发现您可以将函数传递给。从那里,很容易返回想要监视更改的表达式的值。它的工作原理就像在范围上传递属性的键字符串

  • 可从列表中选择并播放视频影像。列表可依名称或日期排列。 A ) (索引列) 触摸图标会显示索引列,直接拖拽即可寻找目标的视频影像。 B ) 排列 轻触菜单可选择排列方法,变更列表的排列顺序。 若连接PS3™或电脑,列表上会追加[PS3™]或[电脑]分类。复制至PS Vita即可播放视频影像。若要进行复制,请轻触(选项)>[复制]。* * PS Vita可播放的文件类型有限。 无法通过索引列搜索PS