角度ng-if +功能不起作用

时间:2015-07-17 14:05:29

标签: angularjs

在我更改anoini的第一个代码中,gerar()函数显示旧值。

但是,当我删除<div ng-if....时工作正常。

你知道什么是错的吗?

韩国社交协会

// JavaScript Document
var app = angular.module('dadosHist', []);

app.controller('dadosHistCtrl', function($scope) {
	$scope.mesini = 1; $scope.anoini = 2011;
	$scope.mesfim = 7; $scope.anofim = 2015;
	$scope.log = "";
	$scope.escolherperiodo = true;
	
	$scope.gerar = function() {
  
		this.log = this.anoini;
		meses = ((this.anofim - this.anoini) * 12) + (12 - this.mesini) + this.mesfim;
		qtdLoop = arrEstacoes.length * meses;
		tempoEstimadoMinutos = Math.round((qtdLoop * 20)  / 60 );

        this.log = 'Tempo Estimado: ' + tempoEstimadoMinutos + ' min.' ;
	}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>


<div ng-app="dadosHist" ng-controller="dadosHistCtrl">
<input type="checkbox" ng-model="escolherperiodo">Escolher Período<br>
<div ng-if="escolherperiodo">
<input type="text" ng-model="mesini" placeholder="Mes">/<input type="text" ng-model="anoini" placeholder="Ano"><br>
<input type="text" ng-model="mesfim" placeholder="Mes">/<input type="text" ng-model="anofim" placeholder="Ano"><br>
</div>
<button ng-click="gerar()">Gerar</button> <br>

{{log}}

    

</div>

2 个答案:

答案 0 :(得分:1)

你不应该为此赋值,而是为gerar函数中的$ scope赋值:

$scope.gerar = function() {

    $scope.log = $scope.anoini;
    meses = (($scope.anofim - $scope.anoini) * 12) + (12 - $scope.mesini) + $scope.mesfim;
    qtdLoop = arrEstacoes.length * meses;
    tempoEstimadoMinutos = Math.round((qtdLoop * 20)  / 60 );

    $scope.log = 'Tempo Estimado: ' + tempoEstimadoMinutos + ' min.' ;
}

答案 1 :(得分:1)

始终在ng-model中使用点!。换句话说,使用对象而不是基元。

ng-if创建一个子范围,因为您在ng-model中使用原语,所以您正在失去与此子范围的范围的双向绑定。

var myModel ={
      mesini : 1,
      anoini : 2011,
      mesfim : 7,
      anofim : 2015
};
$scope.myModel = myModel;

HTML

<input type="text" ng-model="myModel.mesini">

然后在功能:

$scope.gerar = function() {

    $scope.log = myModel.anoini;
    var meses = ((myModel.anofim - myModel.anoini)......

     .....
}

在使用框架时,了解范围嵌套角度是最重要的事情