gpt4 book ai didi

javascript - $watch vs 花括号 - $watch 不捕获范围内变量的变化

转载 作者:行者123 更新时间:2023-11-30 11:55:07 25 4
gpt4 key购买 nike

我在 AngularJS 中遇到问题。我会尽量简化事情来解释我遇到的问题。

我已经创建了一个应该处理图像上传的指令。流程是这样的。

如果图像存在,服务器将返回静态提供的图像的 url。 url 和指令是从服务器异步加载的,因此无法判断哪个先加载。我传递一个作为属性获取的变量

<my-directive vc-current-url="vm.data.profileURL"> </my-directive>

指令范围

scope : { "currentURL" : '=vcCurrentUrl' }

所以,在我的模板中,我可以 {{scope.currentURL}} 并且当它加载时 - 它会显示出来。但是当加载该 url 时我必须做更多的事情——将它传递给另一个函数(原因)。很好,我会添加一个观察者并等待它加载吗?但不是。

scope.$watch(scope.currentURL, function (newValue, oldValue) {
console.log(' changed to ' + newValue + ' from ' + oldValue);
}, true);

console.log 被调用一次并打印

changed to undefined from undefined

我错过了什么?

哦,我正在使用 Angular 1.5。

编辑几个答案是我没有看正确的变量。下面的代码不起作用,它会抛出

Error: currentURL is not defined

代码:

scope.$watch('currentURL', function (newValue, oldValue) {
console.log(' changed to ' + newValue + ' from ' + oldValue);
});

最佳答案

首先,这是您观察值(value)的方式

scope.$watch('currentURL'

其次,这就是你的范围定义的样子

scope : { "currentURL" : '=vcCurrentUrl' }

所以你在 View 上的指令应该是

<my-directive data-vc-current-url="vm.data.profileURL"> </my-directive>

关于javascript - $watch vs 花括号 - $watch 不捕获范围内变量的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38253874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com