我使用angularjs 1.5.7并尝试使用组件方式但我遇到了ng-change的问题。 Ng-change不能通过'='与$ ctrl属性绑定一起使用。任何人都可以解释为什么它不起作用?
看看outerModel。此属性在输入中使用为ngModel值。
组件代码:
"use strict";
CrmApp.component('inputNumber', {
templateUrl: function ($attrs) {
return $attrs.templateUrl || '/templates/components/inputNumber.html';
},
bindings: {
'step': '<',
'min': '<',
'max': '<',
'required': '<',
'disableText': '<',
'resetOnOverflow': '<',
'outerModel': '=',
'changeCallback': '&',
'doubledZero': '<',
},
controller: function($rootScope, $scope, $element) {
let ctrl = this;
let input = $element.find('input');
ctrl.changeCallback = ctrl.changeCallback();
ctrl.descritizeUnceratainVisitMinutes = function (value) {
if (+value > 0 && +value <= 15) {
ctrl.outerModel = 15;
} else if (+value > 15 && +value <= 30) {
ctrl.outerModel = 30;
} else if (+value > 30 && +value <= 45) {
ctrl.outerModel = 45;
} else {
ctrl.outerModel = 0;
}
return ctrl.outerModel;
};
ctrl.test = function () {
alert(123);
console.log(123);
}
}
});
组件模板:
<input
ng-model="$ctrl.outerModel"
ng-required="$ctrl.required"
ng-change="$ctrl.test();"
name="$ctrl.name"
>
我如何使用组件:
<input-number
class="e-time-part__uncertain-visit"
min="0"
required="true"
disable-text="true"
reset-on-overflow="true"
outer-model="visit.hours"
change-callback="changeVisitCallback"
name="hours"
>
答案 0 :(得分:1)
代码明智我认为没有任何问题。你的模板可能会有一些问题。 即便我尝试使用angular1.5.7版本执行它并且工作正常。
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.each_item, null);
答案 1 :(得分:1)
谢天谢地,我发现我的代码有问题。 我使用了没有正确更新UI的微调器https://jqueryui.com/spinner/。通过$ setViewValue更新UI解决了这个问题:
let ngModel = angular.element(input).controller('ngModel');
ngModel.$setViewValue(+ui.value);