这似乎是一个愚蠢的问题,但是我需要知道如何监视页面的整个DOM并在页面发生任何变化时重新对其进行编译。本质上,这是AngularJS在默认情况下通过使用数据绑定来执行的操作,但是我需要在DOM中的任何内容发生变化时(不仅是绑定)发生这种情况。原因是因为我有一个完全用HTML,Javascript和PHP构建的应用程序。它是一个单页应用程序,具有一个主页,并将PHP注入该页面内的DIV包装器中。
我想对其进行一些修改,但要使我的代码与原始代码完全分开。为此,我需要能够在每次注入具有自己的DOM结构的新PHP文件时重新编译DOM。到目前为止,我似乎没有用。
app.directive("watch", function () {
return function (scope, element, attr) {
scope.$watch("watch", function(oldValue, newValue) {
if(newValue) {
console.log("there is a new value");
console.log("the new value is " + newValue);
}
});
}
});
我在<body>
标签上添加了watch属性,但它似乎不起作用,当dom更改时,没有任何记录。最终,我想用$
compile替换console.log,但首先需要使手表工作。有人可以指出我做错了什么吗?
因此,正如我在上面的评论中所述,做您想做的事情是一个坏主意。就是说,如果您仍然想这样做,则可以$watch
通过将函数作为第一个参数传入来进行几乎任何操作。
下面的代码将检查<body>
标记内的HTML 是否已更改。请注意, 这是一个可怕的想法 。
$scope.$watch(function () {
return document.body.innerHTML;
}, function(val) {
//TODO: write code here, slit wrists, etc. etc.
});
上面会随时火手表 ANYTHING 在HTML的变化。
附加信息: 截至目前,在许多浏览器中,还没有真正好的方法来监视已加载的新DOM元素。最好的方法仍然是在添加新的DOM元素时触发某些操作。
问题内容: 我想知道是否有什么办法可以在程序运行时观察变量值的变化。当然不使用调试器,我想以 编程方式进行 。例如: 因此,在运行时,如果在我的项目中任何类的任何方法中修改了此value 事件,则应调用该事件。 问题答案: 您需要用一个类替换该类型,该类将在值更改时调用您的侦听器。您可能想忽略未实际更改的值的设置。 例如 您可以使用字节码注入执行此替换,但是更改原始代码非常简单。 一种替代方法是监
问题内容: 在Javascript中,当使用基于推,弹出,移位或基于索引的分配修改数组时,是否有通知方法?我想要能够触发我可以处理的事件的东西。 我知道SpiderMonkey 的功能,但是仅当整个变量设置为其他值时,该功能才起作用。 问题答案: 有一些选择… 1.覆盖推送方法 走快速而肮脏的路线,您可以覆盖数组1的方法: 1或者,如果要定位 所有 数组,则可以覆盖。但是要小心;您环境中的其他代码
MutationObserver 是一个内建对象,它观察 DOM 元素,并在检测到更改时触发回调。 我们将首先看一下语法,然后探究一个实际的用例,以了解它在什么地方有用。 语法 MutationObserver 使用简单。 首先,我们创建一个带有回调函数的观察器: let observer = new MutationObserver(callback); 然后将其附加到一个 DOM 节点: ob
问题内容: 一个人如何监视/触发一条路线上的事件? 问题答案: 以下事件也可用(它们的回调函数采用不同的参数): $ routeChangeSuccess $ routeChangeError $ routeUpdate-如果将reloadOnSearch属性设置为false
问题内容: 如何在Angular中使用多个变量,并在其中之一发生更改时触发回调。 问题答案: 更新 Angular现在提供了两种范围方法$ watchGroup (从1.3开始)和$watchCollection。这些已被@blazemonger和@kargold提及。 这应该独立于类型和值而工作: 在这种情况下,您必须将第三个参数设置为true。 在这种情况下,字符串连接将失败: 在用户单击按钮
问题内容: 我知道我可以跑步: 但是我想不出一种方法来监视应用程序中的更改。 问题答案: 在文档中: https //github.com/angular-ui/ui-router/wiki#state-change- events