Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度选择框不适用于第一次更改_Javascript_Angularjs - Fatal编程技术网

Javascript 角度选择框不适用于第一次更改

Javascript 角度选择框不适用于第一次更改,javascript,angularjs,Javascript,Angularjs,我有一个angular指令,它用两个选择框替换原始元素,并使范围隔离。但是,我第一次更改“选择框”时它不起作用,之后工作正常 下面是示例代码: app.directive('dayMonth', function () { return { restrict: 'A', scope: { ngModel: '=' }, template: '<div>'+ '<select ng-change="c

我有一个angular指令,它用两个选择框替换原始元素,并使范围隔离。但是,我第一次更改“选择框”时它不起作用,之后工作正常

下面是示例代码:

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;
        };

    }
}
});
应用程序指令('dayMonth',函数(){ 返回{ 限制:“A”, 范围:{ ngModel:“=” }, 模板:“”+ ''+ ''+ '', 替换:正确, 控制器:功能($scope){ $scope.months=[ {'number':0,'name':'Month','days':28}, {'number':1,'name':'一月','days':31}, {'number':2,'name':'二月','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':'九月','days':30}, {'number':10,'name':'十月','days':31}, {'number':11,'name':'十一月','days':30}, {'number':12,'name':'December','days':31}, ]; $scope.ngModel='0.0'; $scope.month=0; $scope.day=0; $scope.$watch('ngModel',函数(val){ if(val){ var monthDay=val.split('.'); 如果(月日长度>=2){ $scope.month=parseInt(monthDay[1]); $scope.day=parseInt(monthDay[0]); } } }); $scope.changeDate=函数(){ $scope.ngModel=$scope.day+'.+$scope.month+'; }; $scope.Range=函数(开始、结束){ var结果=[];
对于(var i=start;i您的代码是正确的。问题在于您使用的Angular版本

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


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

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

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


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

以及“不工作”是如何反映的?到底是什么问题?它不改变模型,返回空选项。您可以在plunke中查看它。而“不工作”是如何反映的?到底是什么问题?它不改变模型,返回空选项。您可以在plunke中查看它r、 更改plunker以反映bebraw正确答案:谢谢!确实如此。我想我必须切换到1.2.26。更改plunker以反映bebraw正确答案:谢谢!确实如此。我想我必须切换到1.2.26。