我试图将我的角度代码从 this.vm 更改为 angular.extend ,以便在使用时更加清晰地了解私有和公共变量/方法控制器作为语法,但我无法从已解决的承诺中获取数据绑定。
// public data to view
var resolvedData;
var otherVar;
angular.extend(this, {
myVar: resolvedData,
mySecondVar: otherVar
})
myFactoty.action().then(function(data){
resolvedData = data;
})
这里我没有任何数据绑定到我的视图,但当我尝试这样的时候:
// 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'未定义的。
如何以正确和良好的实践方式获取数据绑定?
感谢。
答案 0 :(得分:1)
我不确定您尝试实现的清晰度但是您已经遇到了this
的上下文问题,而不是您希望它在promise回调中的内容< / p>
// 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
});
});
所以扩展控制器使用任何闭包中存储的引用
myFactoty.action().then(function(data){
angular.extend(vm, {
myVar: data
});
});