Angular Directive不会更新ng-model

时间:2016-03-09 13:15:13

标签: angularjs angularjs-directive angularjs-ng-model

我似乎找不到在我的指令

中更新我的ng-model的方法

我的指令看起来像这样

app.directive('DatepickerChanger', function () {
    return {
        restrict: 'E',
        require: 'ngModel',
        scope: {
            Model: '=',
            startDate: '=',
            endDate: '=',
        },
        templateUrl: function(elem,attrs) {
            return '/AngularJS/Directives/msDatepickerTpl.html'
        },
        link: function (scope, element, attrs, ngModel) {  
               ngModel = new Date();
        }

    }
});

我像这样使用它

 <DatepickerChanger ng-model="date" required></DatepickerChanger>

其中date是另一个日期对象

如果我在console.log中使用ng-model,我可以看到它改变了它的值,但是从我调用该指令的地方看不到它。任何人都知道我在做什么

1 个答案:

答案 0 :(得分:1)

你错了。此ngModel是controller。您的代码应如下所示:

link: function (scope, element, attrs, ngModel) {  
    ngModel.$setViewValue(new Date());
}

此外,该指令应调用datepickerChanger并在html中引用为datepicker-changer

修改

例如,您想在更改输入后更新ngModel。一种方法是使用bind函数捕获输入字段的事件(我无法看到您的模板,但我想这将有一个输入):

link: function (scope, element, attrs, ngModel) {  
    element.find('input').bind('change', function() {
       // Do something with this.value 
       ngModel.$setViewValue(newDate);
    });
}