我有一个简单的模态,在显示类似..
的消息的条件下触发HTML:
<div ng-if="getGuestModal()"></div>
控制器:
$scope.guestIndicator = function () {
return true;
};
$scope.guestModal = function() {
$modal.open({
animation: true,
controller: guestModalController
templateUrl: "./guestModal.html"
});
};
$scope.getGuestModal = function () {
if ($scope.guestIndicator()) {
$scope.guestModal ();
}
};
遇到错误,上面写着“Uncaught Error:[$ rootScope:infdig] 10 $ digest()迭代次数。中止!”
任何想法?
答案 0 :(得分:1)
也许只是减少一些代码复杂性将解决这个问题......
<div ng-if="getGuestModal()"></div>
在div中你有一个将在页面加载时运行的函数。该函数返回未定义, falsy ,因此 ng-if 值将为&#34; false&#34; 强>;从来没有。
如果您希望功能 getGuestModal 在页面加载时触发,就像使用ng-if一样,那么也许在您的控制器中你可以这样做...
// Controller...
if(guestIndicator()){
$scope.guestModal();
}
我猜你的 div 是不你的实际 HTML for modal,只是你的钩子来激活要触发的功能你的逻辑。
另一种方法是将视图中的 MODAL 连接到自己的自定义指令,例如
<my-modal ng-if="isGuest"></my-modal>
然后在你的控制器中加载像这样的东西......
// Controller...
$scope.isGuest = myLogicFunctionThatReturnsABoolean();
在自定义指令中......
app.directive("myModal",...
return {
restrict: "E",
boiler plate....
controller: function($scope){
$modal.open({
animation: true,
controller: guestModalController
templateUrl: "./guestModal.html"
});
}
}
另外要提的是......
一个模态通常在渲染的dom中,即使它没有显示,然后你只需要在逻辑或逻辑或按钮或链接出现时用布尔值调用它。