Javascript Angularjs ng点击不';t更新视图
那是我的控制器Javascript Angularjs ng点击不';t更新视图,javascript,angularjs,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Click,那是我的控制器 myApp.controller( 'ModalNewInstanceCtrl', [ '$scope', '$modalInstance', function( $scope, $modalInstance ) { $scope.tabSelected = 0; $scope.saveFactor = function () { console.log('here'); $scope.tabSelected = 0; console.log($sco
myApp.controller( 'ModalNewInstanceCtrl', [ '$scope', '$modalInstance', function( $scope, $modalInstance ) {
$scope.tabSelected = 0;
$scope.saveFactor = function () {
console.log('here');
$scope.tabSelected = 0;
console.log($scope.tabSelected);
};
表1
表2
表3
这里有一些内容1
这里有一些内容2
这里有一些内容3
保存并返回到选项卡1
取消并返回到选项卡1
这就是我的html。
我不知道为什么
tabSelected
使用ng click=“tabSelected=0”
直接更改取消链接上的视图,但不在函数saveFactor()内部更改。我知道由于控制台日志语句,函数被正确调用。和tabSelected
也已更改,但视图未更改。我无法在该函数中$scope.$apply()
,因为它会给我一个错误。修改作用域变量时,将HTML更改为使用函数
HTML:
这可能是一个范围问题。我认为缺少一些代码--您能创建一个JSFIDLE吗?检查的简单方法是使用对象(例如tabs.selected=0、tabs.selected=1等)。这将通过作用域保持。你是对的。我剥离代码只是为了显示相关部分。这把小提琴很好用。必须找出我的版本中的错误。你可以在chrome中检查你的范围变量。我认为你的作用域找不到你的变量。您可以在创建变量tabselected的第一个控制器上使用点表示法或setter函数。所以我必须坚持只使用函数,不能在视图和控制器中直接混合变化的变量。一旦我把所有东西都转换成控制器的功能,它就工作了。谢谢
<div class="modal-header">
<div ng-click="tabSelected = 0">Tab 1</div>
<div ng-click="tabSelected = 1">Tab 2</div>
<div ng-click="tabSelected = 2">Tab 3</div>
</div>
<div class="modal-body">
<div ng-show="tabSelected == 0">
<h3>Some content 1 here</h3>
</div><div ng-show="tabSelected == 1">
<h3>Some content 2 here</h3>
</div>
<div ng-show="tabSelected == 2">
<h3>Some content 3 here</h3>
</div>
</div>
<div class="modal-footer">
<button ng-click="saveFactor()">Save and return to tab 1</button>
<a ng-click="tabSelected = 0">Cancel and return to tab 1</a>
</div>
</div>
<div class="modal-header">
<div ng-click="changeTab(0)">Tab 1</div>
<div ng-click="changeTab(1)">Tab 2</div>
<div ng-click="changeTab(2)">Tab 3</div>
...
<div class="modal-footer">
<button ng-click="saveFactor()">Save and return to tab 1</button>
<a ng-click="changeTab(0)">Cancel and return to tab 1</a>
</div>
$scope.tabSelected = 0;
$scope.saveFactor = function () {
console.log('here');
$scope.tabSelected = 0;
console.log($scope.tabSelected);
};
$scope.changeTab= function(tabNum){
$scope.tabSelected = tabNum;
};