在导航到下一个标签页之前,我需要检查当前html页面上的元素(使用ui-view呈现)是脏还是原始。
父页面:
<div class="inner-menu">
<nav>
<div>
<ul class="nav nav-tabs edit-menu" role="tablist">
<!-- location 1 -->
<li ng-repeat="innerTab in innerTabListArr" ng-click="switchTab($index, $event)">
<a role="tab" data-toggle="tab" href="">{{innerTab.text}}</a>
</li>
</ul>
</div>
</nav>
<div ui-view="innerTabHolder" name="currForm"></div>
</div>
,将呈现给innerTabHolder视图的HTML模板是:
<div class="edit-general" id="General">
<div class="modal-dialog modal-lg">
<form class="form-horizontal" name="generalForm">
<label for="inputL3" class="control-label">Text</label>
<div class="col-sm-4">
<input type="text" class="form-control" ng-model="gn.myMdl">
</div>
<div class="box-footer">
<div class="row">
<div class="col-sm-10">
<!-- location 2 -->
<button class="btn" type="button" ng-click="switchTab(generalForm, $event)"> BCK </button>
<button class="btn" type="button" ng-click="saveGen()">Save Above</button>
<button class="btn" type="button" ng-click="switchTab(generalForm, $event)"> FWD </button>
</div>
</div>
</div>
</form>
</div>
</div>
有多个标签会被渲染到视图中。这是我的控制器:
myApp.controller('compTabCtrl',[ '$rootScope', '$scope', '$state', 'mainWebService',
function($rootScope, $scope, $state, mainWebService){
$scope.innerTabListArr = [{"text" : "Tab 1"},{"text" : "Tab 2"}];
$scope.switchInnerTab = function(tabId, event){
};
}]);
好的,所以这是基本的大纲,我相信,我已经涵盖了所有部分。现在,我的问题是我无法将表单:“generalForm”传递到位置1的switchTab函数,因为我可以在位置2处执行相同的操作。
我使用表单$dirty
和$pristine
来检查用户是否对表单进行了任何更改。因此,在单击选项卡进行导航时,表单将变为未定义。
如何访问控制器中子视图的$dirty
属性。
用于演示的Plunker:
答案 0 :(得分:0)
当您尝试访问变量时,请始终使用$ scope
使用
访问curForm$scope.curForm.$dirty