2015-10-13 38 views
0

我试图从this.vmangular.extend为了解有关私营和公共变量/方法更清晰当我使用改变我的角码控制器作为语法,但我无法从已解决的承诺中获得数据绑定。在解决承诺绑定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”。

我怎样才能得到一个正确和良好做法的方式数据绑定?

谢谢。

回答

1

我不知道什么清晰你想acheive但你已经有this不是你希望它是承诺回调内部

// 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 
    }); 
}); 
+0

感谢这个解决我的问题有**无法读取属性未定义“$$ hashKey” **,但它的唯一方法来获取数据绑定? –

+0

不,角度非常擅长拾取视图更改而无需执行此操作。不知道你遇到什么特定的绑定问题 – charlietfl

+0

唯一的方法是每次我想将数据绑定到我的视图时使用angular.extend? –