我有这个控制器:
app.controller('controlFormulario', function($scope) {
this.formulario = [];
this.formulario.fecha = new Date();
});
......这条指令:
app.directive('formulario', [function() {
return {
restrict: 'E', // C: class, E: element, M: comments, A: attributes
templateUrl: 'modules/formulario.html'
};
...而且这个观点:
<div class="form-group">
<label for="fecha">Fecha</label>
<input type="fecha" class="form-control" id="fecha" ng-model="fecha" value="{{formCtrl.formulario.fecha | date}}" disabled>
</div>
正如您可能猜到的,属性值具有日期,完全过滤等等。这里没问题。当您看到网站时发现实际问题,并发现输入没有显示任何内容。 &#34;值&#34;属性是完美分配的,但它没有在输入框中显示。
为什么呢?难道我做错了什么?尝试使用ng-init,ng-value ...我在AngularJS上再见了,刚刚结束了基础教程,我正在尝试练习并获得更多知识,所以也许我可以错过了什么。
任何帮助?
答案 0 :(得分:1)
您需要将data属性存储到$ scope。
答案 1 :(得分:1)
作为最佳做法,您不应该使用$scope
,而应该像您一样使用controllerAs
,因此,在您的控制器中:
var cf = this;
然后,而不是使用
this.formulario = [];
this.formulario.fecha = new Date();
你应该
cf.formulario = [];
cf.fetcha = new Date();
然后,在你的HTML中,你会有
ng-controller="controlFormulario as cf"
然后,输入model
变为:cf.fetcha
,控制器中的所有其他范围现在应该以{{1}}为前缀
cf.
这是一个很好的Article,可以更好地解释这个