當我的復選框被選中時,會打開一個對話框,當我點擊取消時,復選框應該被取消選中。
我不能讓這發生。
如果在對話框中選擇了“否”,則復選框應設定為其先前的狀態(請參閱if宣告)。
但是,似乎為復選框設定模型,$scope.canSupportAccess, 對檢查此函式內的復選框沒有影響。
我已經測驗了是否完全$scope.canSupportAccess可以更新復選框,通過使用true和初始化它false,并且可以看到它確實選中或取消選中復選框。
我注意到我必須canSupportAccess作為引數傳遞給函式,因為即使是模型$scope.canSupportAccess也不會在內部更新,并且在復選框更改時觸發。updateSupportAccess()$scope.canSupportAccessupdateSupportAccess()
為什么$scope.canSupportAccess在函式內部沒有效果,如何更新updateSupportAccess()函式內部的復選框?
這是設計使然,以避免updateSupportAccess()永遠被遞回呼叫嗎?如果是這樣,解決方法是什么?
這是我的代碼:
export default function (app) {
app.controller('userDetailCtrl', [
'shell',
'$scope',
function (shell, $scope) {
$scope.canSupportAccess = false;
$scope.updateSupportAccess = function (canSupportAccess) {
if (canSupportAccess) {
shell.confirmBox('Allow Access',
'Allow access?',
'YesNo', true)
.result
.then(function (result) {
if (result === "yes") {
$scope.canSupportAccess = true;
} else {
$scope.canSupportAccess = false;
}
});
} else {
shell.confirmBox('Remove Access',
'Revoke access?',
'YesNo')
.result
.then(function (result) {
if (result === "yes") {
$scope.canSupportAccess = false;
} else {
$scope.canSupportAccess = true;
}
});
}
}
}]
);
}
和 HTML:
<input type="checkbox"
id="supportAccess"
ng-change="updateSupportAccess(canSupportAccess)"
ng-model="canSupportAccess" />
<label for="supportAccess">
Allow access.
</label>
uj5u.com熱心網友回復:
這是由canSupportAccess存在于不同作用域中的兩個不同屬性引起的,這是AngularJS 中一個非常普遍的問題。嘗試使您的財產至少與 $scope 分開一層,而不是直接附加(例如$scope.access = { canSupport: false })。遵循“controller as”語法最佳實踐可靠地避免了這個問題,有關此約定的示例,您可以在其中使用它,請參閱StackBlitz 的 AngularJS 演示模板。
請參閱有關 AngularJS 中原型繼承主題的流行 SO 答案以進行深入研究:https : //stackoverflow.com/a/14049482/4028303
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/357937.html
