[英]Bootstrap Modal UI not updating when the scope variable is updated in angular using setTimeout and $scope.$apply()
[英]The function runs only once when updating parent controller scope in opened Angular UI Bootstrap Modal
重構測試應用程序后端的代碼后,我遇到了問題。 測試有問題和答案,每個問題有多個答案,只有其中一個是正確的。
經過一些調試后,一切似乎都可以正常工作,但是所有的問題和答案管理邏輯都位於一個控制器中。 我將答案邏輯移到了單獨的嵌套控制器上,之后又陷入了這個問題。 嘗試了不同的方法,但沒有一個有幫助。
目標是將Angular UI樹(示例4-組和類別)與Angular UI Bootstrap Modal結合起來。
通過設計,可以在模態窗口中添加和編輯問題和答案。 該模板是單獨放置的,因此不會在每個問題和答案上重復。 如果提供的數據無效,則會顯示驗證錯誤,否則會顯示成功警報,並且所有字段都將清除並恢復為默認狀態(所有發生在模態窗口內的狀態,它將保持打開狀態,並且只能通過單擊“取消”來關閉, X按鈕或鍵盤的Esc按鈕)。
我需要從模式窗口中更新QuestionsCtrl $scope.questions
(觸發按鈕位於模式窗口模板內)。 點擊“添加”按鈕后, $scope.questions
將更新,ui.tree的背景也將更新。 不顯示成功警報或驗證錯誤,也不清除表單字段。 重復單擊不會再次調用實際函數(因此它僅運行一次)。
沒有模態窗口,但有嵌套的控制器,添加效果很好。
我創建了插件,並刪除了所有冗余代碼,因此專注於該問題將更加容易。 如果需要,我可以提供更多代碼。 例如,在console.log
的壓縮結果中僅顯示一次。
不是說它不起作用。 但是您將數據設置錯誤。 當你寫:
$scope.add = function() {
console.log('!!!');
var data = [{"dataType":"question","id":2,"name":"1. Question 1","answers":[{"dataType":"answer","id":7,"name":"1. Answer 1","correct":false},{"dataType":"answer","id":8,"name":"2. Answer 2","correct":false},{"dataType":"answer","id":9,"name":"3. Answer 3","correct":false}]}];;
$scope.setQuestions(data);
};
和:
$scope.setQuestions = function(data) {
$scope.questions = data;
};
您將問題集合強制為數據,而不是添加新項。 因此,就像重新初始化問題數組一樣。 為此,您需要使用這種setQuestions函數:
$scope.setQuestions = function(data) {
$scope.questions.push(data);
};
這樣,您的新問題將被添加到已經存在的問題中。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.