功能不更新控制器中的变量

时间:2017-10-02 19:20:30

标签: javascript angularjs

我无法解决这个问题。

这是我的主要页面控制器:

'use strict';
angular.module('myContacts', [
    'ngRoute',
    'firebase',
    'contacts.mycontacts'
])

.config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
    $locationProvider.hashPrefix('!');
    $routeProvider.otherwise({redirectTo: '/contacts'});
}]);

这是我的第二个或联系人控制器:

angular.module('contacts.mycontacts', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/contacts', {
        templateUrl: 'contacts/contacts.html',
        controller: 'contactsCtrl'
    });
}])

.controller('contactsCtrl', ['$scope',function($scope) {
    $scope.showAddForm = function(){
        console.log($scope.addFormShow); // gives me undefined every time
        $scope.addFormShow = true;
        console.log($scope.addFormShow); // gives me true
    }
    console.log($scope.addFormShow); //gives me undefined 
}]); 

这是我的联系人HTML:

<div class="row" ng-controller='contactsCtrl'>
<div ng-show="addFormShow"> the Add Button get a  click from user </div>
<div class="small-12 large-2 columns">
    <a class="button large" href="#" ng-click="showAddForm()">+  </a>
</div>
</div>

正如你在modulel-&gt; contacts.mycontacts-&gt;控制器中看到的那样,这是问题函数

$scope.showAddForm = function(){ console.log($scope.addFormShow); // gives me undefined every time
$scope.addFormShow = true;
console.log($scope.addFormShow); // gives me true 
}   
console.log($scope.addFormShow); //gives me undefined

来自ng-view下联系人的HTML发生问题//上面的函数没有在HTML下面更新addFormShow

<div class="row" ng-controller='contactsCtrl'>
<div ng-show="addFormShow"> the Add Button get a  click from user </div>
<div class="small-12 large-2 columns">
    <a class="button large" href="#" ng-click="showAddForm()">+  </a>
</div>
</div>

2 个答案:

答案 0 :(得分:0)

这是预期的行为。 您编写函数和console.log的顺序无关紧要。

正在发生的是您正在记录当时未定义的变量。然后可能调用该函数并再次获取未定义,分配它,并获得真实。

我强烈建议您按照John's papa guidelines编写代码。

要“修复”您遇到的任何问题,请在控制器顶部定义变量

<configuration>
    <startup><supportedRuntime version="v4.0" sku=".NetFramework,Version=v4.6.2"/></startup>
</configuration>

答案 1 :(得分:0)

刚刚解决了由于href =&#34;#&#34;

引起的问题
 <a class="button large" href="#"ng-click="showAddForm()">+  </a>

将其更改为

 <a class="button large" href="javascript:void(0)" ng-click="showAddForm()">+</a>