带有javascript模型和ngModel的Angle组件

带有javascript模型和ngModel的Angle组件,javascript,angularjs,angularjs-ng-model,Javascript,Angularjs,Angularjs Ng Model,我正在尝试使用普通javascript模型创建一个angular组件,一个时间选择器,我希望该组件的控制器公开一个api,并使用ngModel。 我是一个有棱角的新手,不知道如何使用ngModel。我在模板中有两个输入,分别是小时和分钟。我的问题是,我不知道如何将ngmodel参数传递给控制器 我已经准备好了一个扑克牌: (函数(){ var app=angular.module('plunker',[]); 函数DemoController(){ this.tpVal={ 时间:10,,

我正在尝试使用普通javascript模型创建一个angular组件,一个时间选择器,我希望该组件的控制器公开一个api,并使用ngModel。 我是一个有棱角的新手,不知道如何使用ngModel。我在模板中有两个输入,分别是小时和分钟。我的问题是,我不知道如何将ngmodel参数传递给控制器

我已经准备好了一个扑克牌:

(函数(){
var app=angular.module('plunker',[]);
函数DemoController(){
this.tpVal={
时间:10,,
分钟:0
};
}
应用控制器(“DemoController”,DemoController);
函数TimePickerModel(配置){
this.show=config.show | | true;
this.hours=null;
this.minutes=null;
}
函数TimePickerController(){
//州的API
this.model=newtimepickermodel({});
}
TimePickerController.prototype.show=函数showTimePicker(){
this.model.show=true;
};
TimePickerController.prototype.hide=函数hideTimePicker(){
this.model.show=false;
};
TimePickerController.prototype.setHours=函数setHoursTimePicker(小时){
this.model.hours=小时;
};
TimePickerController.prototype.setMinutes=函数setMinutesTimePicker(分钟){
this.model.minutes=分钟;
};
TimePickerController.prototype.setValue=函数setValueTimePicker(值){
this.model.hours=数值;
this.model.minutes=值;
};
app.directive('timepicker',函数($compile){
返回{
限制:“AE”,
控制器:“TimePickerController”,
作用域:{},
要求:'ngModel',
templateUrl:'timepicker.html',
链接:功能(范围、元素、属性、模型){
//log('Model val:'+ngModel.$modelValue);
//log('View val:'+ngModel.$viewValue);
ngModel.$render=function(){
//对你的模特做点什么
console.log(scope.model);
var实际价值=ngModel.$modelValue;
log('Model val:'+ngModel.$modelValue.hours);
log('View val:'+ngModel.$viewValue.hours);
//console.log(element.find('input')[0]);
//元素.find('input')[0].val(actualValue.hours);
}
}
};
});
应用控制器(“TimePickerController”,TimePickerController);
})();

你好,普朗克!
{{ctrl.tpVal}}

ng model
是一个将输入值绑定到scope属性的函数,您不需要插入它或使用相同的名称调用指令属性。如果要将控制器中的值注入指令,可以使用scope属性。 在指令中:

scope: {
        model : '=time'
      },
在index.html中

   <timepicker time="ctrl.tpVal"></timepicker>

请检查以下修改:。
您还可以通过在指令中添加dummy
increaseHours
函数,了解如何在指令内部更改模型值

ng model
是一种将输入值绑定到scope属性的方法,您不需要注入它或使用相同的名称调用指令属性。如果要将控制器中的值注入指令,可以使用scope属性。 在指令中:

scope: {
        model : '=time'
      },
在index.html中

   <timepicker time="ctrl.tpVal"></timepicker>

请检查以下修改:。
您还可以通过在指令中添加dummy
increaseHours
函数,了解如何在指令内部更改模型值

谢谢你的回答。我想保持状态,使用ng模型是不可能的?你能解释一下“保持状态”是什么意思吗?保留命名,或者将您在定向和控制器中增加的内容分开?对不起,我解释得很糟糕。我的意思是,例如,从DemoController调用ctrl.tpVal.$dirty以了解用户是否已经进行了交互。您能否在不涉及角度特定术语的情况下进行解释—您希望实现什么?这是制定任务的最简单方法,然后我们将看到代码中缺少了什么来完成任务。使用该指令的开发人员可能能够添加客户端验证和服务器验证,还知道用户是否更改了值,等等。感谢您的回答。我想保持状态,使用ng模型是不可能的?你能解释一下“保持状态”是什么意思吗?保留命名,或者将您在定向和控制器中增加的内容分开?对不起,我解释得很糟糕。我的意思是,例如,从DemoController调用ctrl.tpVal.$dirty以了解用户是否已经进行了交互。您能否在不涉及角度特定术语的情况下进行解释—您希望实现什么?这是制定任务的最简单方法,然后我们将看到代码中缺少了什么来完成任务。使用该指令的开发人员可能能够添加客户端验证和服务器验证,还知道用户是否更改了值,等等。