函数在angularJs中调用两次

时间:2015-07-16 07:18:21

标签: javascript jquery angularjs

我有一个关于plunkr的演示,我遇到问题,而点击功能在ng-click事件函数调用两次通过检入控制台: -

<a class="btn btn-default finish" style="display:none" ng-click="result()">Finish</a>

这是我的控制器代码: -

var app = angular.module('app', ['ngRoute']);
app.config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl: 'MainView.html',
        controller: 'MainCtrl'
    }).when('/view', {
        templateUrl: 'view2.html',
        controller: 'MainCtrl'
    });
});
app.controller('MainCtrl', function($scope, $location) {
    $scope.name = 'World';
    $scope.correctAnswer = [];

    $scope.result = function() {
        $scope.correctAnswer.push({
            "label1": "value1"
        }, {
            "label2": "value2"
        }, {
            "label3": "value3"
        });
        console.log($scope.correctAnswer);
        $location.path("/view");
    }
});

Plunker

2 个答案:

答案 0 :(得分:5)

哦,很简单,你打电话给$location.path("/view");view2.html有一个ng-init做同样的result()功能:

<div class="tab-pane fade" id="profile" ng-init="result()">

这是updated Plunker,有一个可能的(快速)解决方案。

答案 1 :(得分:0)

此外,您可以添加对当前位置的简单检查并呈现不同的代码,请参阅以下代码:

$scope.result = function () {

  if($location.path() == ("/")){ 
     $location.path("/view");
  }else{
    $scope.correctAnswer.push({"label1":"value1"},{"label2": "value2"},{"label3": "value3"});
  }
  console.log($scope.correctAnswer);
}

由于