簡體   English   中英

在打開的Angular UI Bootstrap Modal中更新父控制器作用域時,該函數僅運行一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM