javascript - Angular 选择框在第一次更改时不起作用

标签 javascript angularjs

我有 Angular Directive(指令),它用 2 个选择框替换原始元素并隔离范围。但是,选择框在我第一次更改时不起作用,之后工作正常。

这里是示例代码:

app.directive('dayMonth', function () {
return {
    restrict: 'A',
    scope: {
        ngModel: '='
    },
    template: '<div>'+
                '<select ng-change="changeDate()" ng-model="month" ng-options="item.number as item.name for item in months" ></select>'+
                '<select ng-change="changeDate()" ng-model="day" ng-options="item for item in Range(1,months[month].days)" ></select>'+
              '</div>',
    replace: true,
    controller: function ($scope) {

        $scope.months = [
            {'number':0,'name':'Month','days':28},
            {'number':1,'name':'January','days':31},
            {'number':2,'name':'February','days':28},
            {'number':3,'name':'March','days':31},
            {'number':4,'name':'April','days':30},
            {'number':5,'name':'May','days':31},
            {'number':6,'name':'June','days':30},
            {'number':7,'name':'July','days':31},
            {'number':8,'name':'August','days':31},
            {'number':9,'name':'September','days':30},
            {'number':10,'name':'October','days':31},
            {'number':11,'name':'November','days':30},
            {'number':12,'name':'December','days':31},
        ];

        $scope.ngModel = '0.0.';
        $scope.month = 0;
        $scope.day = 0;

        $scope.$watch('ngModel', function(val) {
            if (val) {
                var monthDay = val.split('.');

                if ( monthDay.length >= 2 ) {
                    $scope.month = parseInt( monthDay[1] );
                    $scope.day = parseInt( monthDay[0] );
                }
            }

        });

        $scope.changeDate = function () {
            $scope.ngModel = $scope.day + '.' + $scope.month + '.';
        };

        $scope.Range = function(start, end) {
            var result = [];
            for (var i = start; i <= end; i++) {
                result.push(i);
            }
            return result;
        };

    }
}
});

此外,这里是示例 plunker

最佳答案

您的代码是正确的。问题出在您使用的 Angular 版本上。

我用 http://code.angularjs.org/1.2.0/angular.js 替换了脚本 src,它开始按预期工作(即时更新)。

考虑使用最新的 1.2 或 1.3 来解决该问题。

关于javascript - Angular 选择框在第一次更改时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718651/

相关文章:

javascript - 引用错误 : module is not defined - Karma/Jasmine configuration with Angular/Laravel app

angularjs - AngularAMD、动态 UI 路由器、RequireJS - "Error: ' MyDashboardCtrl' 不是函数,未定义”

angularjs - Angular.js 谷歌爬虫

javascript - 在 KendoUI 的模板中使用时,不会调用 AngularJS ng-click

javascript - 主干集合 - fetch(),成功回调不工作

javascript - 如何在选择下拉列表中随机选择以前在 JavaScript 中未选择的项目?

javascript - Angularjs + 禁用和启用提交按钮

javascript - ng-view 以 Angular 加载一个新的单独页面

javascript - 是否有一个 jquery 插件可以水平而不是垂直列化列表项?

javascript - 不确定react.js 的异步执行时间