【发布时间】:2016-11-04 09:05:43
【问题描述】:
我使用 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"
>
【问题讨论】:
标签: angularjs components