【发布时间】:2015-03-17 13:00:37
【问题描述】:
我正在尝试制作我的第一个 AngularJS 应用程序,但遇到了问题。
我有一个意见:
<input ng-model="userNameLogin" type="text" placeholder="username" class="form-control">
一个按钮:
<button ng-click="setActiveUser()" type="submit" class="btn btn-success">Sign in</button>
还有一个表达式:
{{ activeUser }}
单击按钮后,我希望文本更改为输入中输入的内容。为此,我有以下控制器:
app.controller('View1Ctrl', ['$scope', function($scope) {
$scope.userNameLogin = "";
$scope.activeUser = "Test";
$scope.setActiveUser = function() {
$scope.activeUser = $scope.userNameLogin;
console.log($scope.activeUser);
};
}]);
初始值“Test”显示得很好,根据控制台,“activeUser”的值也被正确更改。但是视图中的文本保持不变。
我见过类似的问题,其中$scope.$apply() 是答案,但如果我在console.log 之后添加它,我会得到
“错误:[$rootScope:inprog] $apply 已经在进行中”。
我在这里错过了什么?
编辑:
我注意到,如果我将输入、按钮和表达式放在同一个 HTML 文件中,则一切正常。但是我的输入和按钮位于index.html 的导航栏中,而表达式位于view1.html
这是index.html的正文:
<body ng-app="myApp.view1">
<nav class="navbar navbar-inverse navbar-fixed-top" ng-controller="View1Ctrl as view">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#/view1">Kwetter</a>
</div>
<div class="navbar-collapse collapse" >
<ul class="nav navbar-nav">
<li><a href="#/view1">Home</a></li>
<li><a href="#/view2">Profile</a></li>
</ul>
<form class="navbar-form navbar-right">
<div class="form-group">
<input ng-model="userNameLogin" type="text" placeholder="username" class="form-control">
</div>
<div class="form-group">
<input type="password" placeholder="password" class="form-control">
</div>
<button ng-click="setActiveUser()" type="submit" class="btn btn-success">Sign in</button>
</form>
</div>
</div>
</nav>
<div id="pagewrapper" class="container">
<div ng-view></div>
<div>Angular seed app: v<span app-version></span></div>
</div>
这是我的view1.html
<div ng-controller="View1Ctrl as view">
<!-- row 1: welcome -->
<div class="row">
<div class="col-md-12 pull-left">
<image ng-src="{{ view.users[0].avatar }}"/>
<!-- If I put the button and input here it will work -->
<input ng-model="userNameLogin" type="text" placeholder="username" class="form-control">
<button ng-click="setActiveUser()" type="submit" class="btn btn-success">Sign in</button>
{{ activeUser }}
</div>
</div>
<!-- row 2: main content -->
<!-- left the rest of the content out because it would just clutter the page -->
我尝试将 ng-controller 放在 <div id="pagewrapper" class="container"> 中,而不是 view1.html 的第一个 div 中,但这没有任何区别。
【问题讨论】:
-
可能是你把
{{ activeUser }}放在了控制器div之外 -
感谢您的建议,pankajparker。我查了一下,事实并非如此。
-
Ben Felda,“文本保持不变”我的意思是它说“测试”,即使在单击按钮之后也是如此。
-
控制台是否显示了您的预期?
-
我只是按原样运行了你的代码,它运行良好,我倾向于同意第一个评论并说 {{ activeUser }} 不在你定义的元素中 ng-控制器="View1Ctrl"
标签: javascript angularjs