0

我喜欢 angularjs,但我对指令很困惑,哈哈。

我有以下内容:

//postcode grabber
app.directive('postcodes',
    function ($rootScope, $http) {
        return function (scope, element, attrs) {
            element.bind('change', function () {
                var targetSuburb = scope.$eval(attrs.targetSuburb);
                alert(targetSuburb);
                var modal_element = angular.element('#myModal');
                var ctrl = modal_element.controller();
                var url = '/postage/postcodes/?suburb=' + element.val();
                ctrl.setModal(url);
                modal_element.modal('show');
            });
        };
    });

这是我的 HTML:

<input type="text" class='form-control' ng-model="model.suburb" postcodes id='ca_suburb' target-suburb='ca_suburb' target-state='ca_state' target-postcode='ca_postcode'>

警报总是“未定义” - 我是否缺少能够正确访问属性的东西?

4

2 回答 2

1

如果您想访问模型的值,那么

app.directive('postcodes', function ($rootScope, $http) {
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, controller) {
            element.bind('change', function () {
                console.log(controller.$viewVaue)

                var modal_element = angular.element('#myModal');
                var ctrl = modal_element.controller();
                var url = '/postage/postcodes/?suburb=' + element.val();
                ctrl.setModal(url);
                modal_element.modal('show');
            });
        }
    };
});

演示:小提琴

如果您想提醒,ca_suberb那么只需使用

    警报(attrs.targetSuburb);

演示:小提琴

如果ca_suberb是范围属性,那么您的代码工作正常

演示:小提琴

于 2013-09-03T03:39:32.693 回答
0

如果您想获取输入的内容,您应该通过这样的范围访问

alert(scope.model[attrs.targetSuburb]);

whereattrs.targetSuburb应该是字段名称,并且应该像这样设置,因为您将模型定义为model.suburb

target-suburb='suburb'
于 2013-09-03T03:40:22.340 回答