我正面临有关mdl-textfield
行为
在下面的plnkr上,按照以下步骤操作:
http://plnkr.co/edit/MUI2iBslIH9jd4fgEQPL?p=preview
ngView
内容
<div data-ng-controller="MainCtrl">
<section data-ng-repeat="fo in foo">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="text" id="sample1" data-ng-model="fo.bar"/>
<label class="mdl-textfield__label" for="sample1">{{fo.bar}}</label>
<span ng-if="$last" ng-init="update()"></span>
</div>
<button ng-click="focopy(fo)">Copy</button>
</section>
<div data-ng-show="datacopy.edit" class="input-field">
<input type="text" id="ex1" data-ng-model="datacopy.bar" />
<label for="ex1">label</label>
</div>
</div>
Angular模块
var app=angular.module('plunker', ['ngRoute'])
app.config(function($routeProvider){
$routeProvider
//Root URL
.when('/',{template:'<p>Coucou</p>'})
.when('/groups',{templateUrl:'groups.html'})
.when('/groupsnotworking',{templateUrl:'groupsnotworking.html'})
});
app.controller('MainCtrl', function($scope,$timeout) {
$scope.foo = [
{bar: 'world'},{bar:'toto'},{bar:'toto'}
];
$scope.groups=$timeout(function(){
$scope.groups=$scope.foo
},1000);
$scope.update=function(){
componentHandler.upgradeAllRegistered();
};
$scope.datacopy={};
$scope.focopy=function(data){
$scope.datacopy=angular.copy(data);
$scope.datacopy.edit=true;
};
});
希望它足够清楚。 我试图在材料设计精简版的github上发布它认为这是一个错误,但我已经开始在这里...... 谢谢
答案 0 :(得分:3)
如果在注册mdl组件后设置mdl-textfield__input
的{{1}}值,则ng-model
不会获得mdl-textfield
类,因此不按照应有的方式行事。
您可以在`mdl-textfield__input字段:
上使用此指令is-dirty
答案 1 :(得分:0)
如果通过脚本清除,则必须手动清理MDL js文本输入。例如,清除输入值后,请调用此mdlCleanup();
。
//MDL Text Input Cleanup
function mdlCleanUp(){
var mdlInputs = doc.querySelectorAll('.mdl-js-textfield');
for (var i = 0, l = mdlInputs.length; i < l; i++) {
mdlInputs[i].MaterialTextfield.checkDirty();
}
}
答案 2 :(得分:0)
和我一起工作。希望这可以帮到你
function CleanMDL() {
setTimeout(function () {
$scope.$apply(function () {
var x = document.getElementsByClassName("mdl-js-textfield");
var i;
for (i = 0; i < x.length; i++) {
x[i].MaterialTextfield.checkDirty();
}
})
}, 100);
}