我目前正在使用組件重構角度爲1.5.8的應用程序中的一些代碼。更新變量前的角度組件觸發方法調用
(非常類似於本指南中的某些步驟:https://teropa.info/blog/2015/10/18/refactoring-angular-apps-to-components.html) 基本案例工作正常。
但我得到一個問題,當我需要讓我的組件都更新變量,並且還調用一個函數(都綁定從父)。在這種情況下,函數調用似乎在變量被綁定之前發生。所以當方法對父對象執行時,它仍然使用變量的舊內容。
如何確保變量在方法執行前已更新?
請參閱下面的代碼中的註釋,它是reset()函數的兩行。
angular.module('searchfieldComponent', [])
.component('searchfieldComponent', {
templateUrl: "/js/common/components/searchfield.component.tpl.html",
bindings: {
labelText: '@',
searchText: '=',
searchCallback: '&'
},
controllerAs: "vm",
controller: [function() {
var vm = this;
vm.search = function() {
vm.searchCallback();
}
vm.reset = function() {
vm.searchText = null;
// When the method bound to searchCallback executes in the parent,
// the variable bound to searchText has not yet been set to null
// it is still the old value.
vm.searchCallback();
}
}]
});
當您使用對象在組件之間傳遞數據,然後修改其屬性時會發生什麼?像'searchData:'=「; /*...*/ vm。searchData.text = null' – raina77ow
這是有效的。謝謝!我想這是因爲它整個時間都是同一個對象,所以我通過這種方式避免了時間問題。隨意發佈它作爲答案,但我認爲包裝對象是一種解決方法,而不是最佳解決方案。如果沒有更好的答案出現,我會在幾天內接受它。 – PMBjornerud