1

我正在创建一个自定义属性,它将角度 ui 选择数据发送到服务器。但是,在我的自定义指令中,我需要绑定到on-select事件来实现这一点。

这是我的指令的 html 代码:

 <div class="component">
        <ui-select send-data ng-model="country.selected" theme="select2" ng-disabled="disabled" style="width: 300px;">
            <ui-select-match placeholder="Select or search a country in the list...">{{$select.selected.name}}</ui-select-match>
            <ui-select-choices repeat="country in countries | filter: $select.search">
                <span ng-bind-html="country.name | html"></span>
                <small ng-bind-html="country.code | html"></small>
            </ui-select-choices>
        </ui-select>
    </div>

请注意,该指令正在使用自定义指令send-data。这是我的指令:

var app = angular.module('app');
app.directive('sendData', [
        '$compile', '$timeout', '$http', function ($compile, $timeout, $http) {
            return {
                require: 'ngModel',
                link: function (scope, el, attrs, ctrl) {                         
                    el.on('on-select', function () {
                        console.log("changed");
                    });                 
                }
            };
        }
]);

console.log("changed");语句未在上述指令中触发。这是为什么呢,我是不是搞错了?

我知道我可以on-select从控制器绑定到事件。但我想在自定义属性中实现这一点。

4

1 回答 1

1

你不能,on-select不是一个事件(比如click,keydown)所以你可以绑定一个监听器,ui-select 实现它的方式他们只是绑定一个控制器或父级函数。

所以最好让ui-select处理on-select方法。

如果你有任何 DOM 操作,on-select那么在你的sendData指令中你必须找到正确的li元素并设置click事件。

于 2015-10-20T06:42:45.470 回答