Angularjs 1.5.7 ng - 从组件更改不起作用

时间:2016-07-01 21:30:00

标签: angularjs components

我使用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"
                >

2 个答案:

答案 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);