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