我的应用有反馈功能,
#feedback
%h3.button
%a{"ui-sref" => ".feedback", "ng-click" => "feedbackActive=!feedbackActive;"}
Feedback
#feedback-container{"ng-if" => "feedbackActive"}
%div{"ui-view" => "feedback"}
#feedback-container
有一个ng-if
,因此只在需要时加载内容。 %a
有一个ng-click,可以在feedbackActive
状态的true / false之间切换。
这很好用。无论如何在我的ui-view中我加载了一个模板。该模板中有一个发送按钮,其send()
功能与feedbackCtrl
$scope.send = function(){
console.log ('send')
console.log ($scope.feedbackForm)
createFeedback.create({
name: $scope.feedbackForm.name,
feedback: $scope.feedbackForm.feedback
})
$scope.feedbackActive = false;
}
它运行代码很好,但没有给feedbackActive
假值,所以没有任何反应。
如何删除从控制器外部切换ng-if
?
答案 0 :(得分:1)
这是一个经典的范围界定问题。您的控制器范围是ng-if
指令范围的子级。一种选择是使用$scope.$parent
在父作用域上设置变量。
$scope.send = function(){
console.log ('send')
console.log ($scope.feedbackForm)
createFeedback.create({
name: $scope.feedbackForm.name,
feedback: $scope.feedbackForm.feedback
})
$scope.$parent.feedbackActive = false;
}
另一种选择是利用原型继承。在父控制器中,初始化对象。
$scope.x = {}; //parent scope
在视图控制器中,设置继承对象的属性。
$scope.x.feedbackActive = false; //child scope
当然还有HTML
<feedback-container ng-if="x.feedbackActive">