gpt4 book ai didi

javascript - 在已解决的 promise 中使用 angular.extend 绑定(bind)数据的正确方法

转载 作者:行者123 更新时间:2023-12-03 08:38:55 25 4
gpt4 key购买 nike

我正在尝试将我的 Angular 代码从 this.vm 更改为 angular.extend,以便在我使用 Controller 时更清楚地了解私有(private)和公共(public)变量/方法语法,但我无法从已解决的 promise 中获取数据绑定(bind)。

// public data to view

var resolvedData;
var otherVar;

angular.extend(this, {
myVar: resolvedData,
mySecondVar: otherVar
})

myFactoty.action().then(function(data){
resolvedData = data;
})

这里我没有任何数据绑定(bind)到我的 View ,但是当我尝试这样时:

// public data to view

var resolvedData;
var otherVar;

angular.extend(this, {
myVar: resolvedData,
mySecondVar: otherVar
})

myFactoty.action().then(function(data){
angular.extend(this, {
myVar: data
})
})

我得到:无法读取未定义的属性“$$hashKey”。

如何以正确且良好的实践方式获得数据绑定(bind)?

谢谢。

最佳答案

我不确定您想要达到什么清晰度,但您已经遇到了上下文问题,this 不是您期望的 promise 回调中的内容

// always store a reference to `this`
var vm= this;

myFactoty.action().then(function(data){
// this != vm because it's inside a function closure
angular.extend(this, { // won't work
myVar: data
});
});

因此,要扩展 Controller ,请使用任何闭包内存储的引用

myFactoty.action().then(function(data){
angular.extend(vm, {
myVar: data
});
});

关于javascript - 在已解决的 promise 中使用 angular.extend 绑定(bind)数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113163/

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