HTML:
<div ng-controller="AppCtrl" class="sample tabsdemoDynamicTabs" layout="column" ng-app="MyApp">
<md-content class="md-padding">
<md-tabs md-selected="selectedIndex">
<md-tab label="Login">
<form name="loginForm">
<md-input-container>
<label>Username</label>
<input type="text" name="login_username" ng-model="login_username" required>
</md-input-container>
<md-input-container>
<label>Password</label>
<input type="password" name="login_passwd" ng-model="login_passwd" required>
</md-input-container>
<md-button class="md-button md-raised" ng-disabled="loginForm.$invalid" ng-click="login()">Login</md-button>
</form>
</md-tab>
</md-tabs>
</md-content>
</div>
JS:
(function () {
'use strict';
angular
.module('MyApp')
.controller('AppCtrl', AppCtrl);
function AppCtrl ($scope) {
$scope.login = function(){
alert($scope.login_username);
alert(this.login_username);
}
}
})();
http://codepen.io/anon/pen/xGdqwa
如果我将表格移到md-tabs
之外,一切都运作良好。
为什么$scope
无法在ng-model
中获得md-tabs
?
答案 0 :(得分:3)
两件事:
ngMaterial
作为依赖项
像这样 (function () {
'use strict';
angular
.module('MyApp',['ngMaterial'])
.controller('AppCtrl', AppCtrl);
function AppCtrl ($scope) {
$scope.login = {
username: 'email@example.com',
passwd: ''
};
$scope.dologin = function(){
alert($scope.login.username);
alert(this.login.username);
}
}
})();
HTML
<div ng-app="MyApp">
<div ng-controller="AppCtrl">
<form name="loginForm" >
<md-tabs md-dynamic-height md-border-bottom>
<md-tab label="login">
<md-input-container>
<label>Username</label>
<input type="text" name="login_username" ng-model="login.username" required />
</md-input-container>
<md-input-container>
<label>Password</label>
<input type="password" name="login_passwd" ng-model="login.passwd" required />
</md-input-container>
<md-button class="md-button md-raised" ng-disabled="loginForm.$invalid" ng-click="dologin()">Login</md-button>
</md-tab>
<md-tab label="other tabs"></md-tab>
<md-tab label="other tabs"></md-tab>
<md-tab label="other tabs"></md-tab>
<md-tab label="other tabs"></md-tab>
</md-tabs>
</form>
</div>
</div>
说明:自定义指令带有自己的范围,当您使用ng-model
时,变量属于默认范围(在您的情况下为md-tabs
),可以解决这样您就可以初始化控制器中的ng-model
。
答案 1 :(得分:1)
别忘了点。
通过不将模型附加到对象上,您将失去模型的范围。
而不是
NG-模型=&#34; login_username&#34;
尝试使用
NG-模型=&#34; login.username&#34;
答案 2 :(得分:0)
应该显示错误(如果有),将.module('MyApp')
更改为.module('MyApp', [])
答案 3 :(得分:0)
这是角度范围继承问题,md-tabs使用子范围。看到这个问题,相同的解决方案将适合您: