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

有没有办法查看从AngularJS世界外部触发的属性更改?

蔚元明
2023-03-14
问题内容

我正在尝试了解Angular世界和非Angular世界之间的相互作用。

给定一个这样声明的指令:

<dir1 id="d1" attr1="100"/>

如果超出角度的代码以这种方式更改指令:

$("#d1").attr("attr1", 1000);

指令如何知道其属性之一已更改?


问题答案:

最好改为在指令中进行此更改。如果由于某种原因无法做到这一点,那么有两种选择。

在应用程序外部,获取对应用程序中任何DOM元素的引用。使用该引用,然后可以获取对其范围的引用。您可以将元素与id一起使用d1。例如:

var domElement = document.getElementById('d1');
var scope = angular.element(domElement).scope();

这里有几个选择:

修改模型,而不是直接更改视图。在链接函数中,将初始属性值存储在范围变量中,例如:

scope.myvalue = attrs.attr1;

然后,您可以在应用程序外部更改值(使用上述对范围的引用),例如:

scope.$apply(function(){
    scope.myvalue = 1000;
    console.log('attribute changed');
});

这是一个jsfiddle

选项2

如果视图与jQuery的直接操作,我不知道有什么用途的$observe$watch或分离的范围结合,将工作属性,因为它们都绑定到该属性表达式本身,只有一次,当链路功能第一次运行。更改值将导致这些绑定失败。因此,您必须$watch将属性设置为DOM元素本身(而不是通过attrs):

scope.$watch(function(){         
    return $(el).attr('attr1');    // Set a watch on the actual DOM value
}, function(newVal){
    scope.message = newVal;
});

然后,您可以在应用程序外部更改值(使用上述对范围的引用),例如:

scope.$apply(function(){
    $("#d1").attr("attr1",1000);
});

这是一个jsfiddle



 类似资料:
  • 我是堆栈溢出的新手,所以我希望我没有问与另一个用户相同的问题,或者以难以阅读的方式构建我的问题。 我问题的背景 我试图建立一个自动化框架,用于测试网站的功能,为了被认为是成功的,它需要: 触发用cucumber编写的单个/一组测试的构建-这些由用PHP编写的特性上下文(laravel dusk)支持。 执行上述单个/一组测试并生成包含执行结果的JSON文件,即通过|失败-完成 将生成的JSON文件

  • 我可能有kubernetes DNS问题,因为我的服务无法与外部世界通信(bitbucker.org)。实际上我找到了这个页面:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/ 并在我的集群上验证它(没有minikube): 主节点: 节点工作者:

  • 我有一个应用程序,它指的是一个MY_PRODUCT_CONF_DIR/mycustom.properties文件,其中有一些键值对,需要在我的WildFly上部署的耳朵、战争或罐子外部。在Jboss 6.1.0的早些时候。我们用一种棘手的方式做了这件事。jboss 6.1.0有一个URL集合,CL加载服务器时可见。 例如(https://repository.jboss.org/org/jboss

  • 我们有JPA hibernate的spring boot项目。设置非常普通-rest controller-Service-Repository。有一个返回类型为实体的特定endpoint。该服务从db获取实体,进行一些计算,然后将其返回给客户端。问题是,一旦服务调用返回,就会在后端的这个实体上触发一个更新查询。任何实体属性都不会更改。Repository.save()也未被调用,但更新查询仍在进

  • 假设有一个类库X的输入文件,其中包含一些接口。 为了使用这个库,我需要传递一个与。当然,我可以在源文件中创建相同的接口: 但这样一来,我就有了让它和库中的一个保持最新的负担,而且它可能非常大,并导致大量代码重复。 因此,有没有办法“提取”接口的这个特定属性的类型?类似于(这不起作用,导致“找不到名称I2”错误)。 编辑:在TS操场上玩了一会儿后,我注意到以下代码完全实现了我想要的: 但是,它需要声

  • 我在WebSphere 9.0上部署了一个简单的Spring Boot REST api。 此API有一个登录endpoint,该endpoint应触发Webphere中的身份验证流。 当我在SecurityConfig中使用带有指定jee()标签的基本身份验证时,一切都很好。甚至角色也被正确映射。因此预身份验证部分正在工作。但是我想使用我的自定义登录endpoint而不是基本身份验证。 例如: