2015-10-13 72 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? –