ng-change在我的指令中不适用于选择

ng-change is not working on select in my directive

本文关键字:不适用 适用于 选择 指令 我的 ng-change      更新时间:2023-09-26

ng-change, ng-click 不起作用 仅在指令中选择谁能帮我?

.HTML

 <div select-list="items"></div>

命令:

myApp.directive("selectList", function(){
return function (scope, element, attr) {
    var data = scope.items;
    if(angular.isArray(data)){
        var selectElem = angular.element("<select>").attr('ng-change', 'test()');
        element.append(selectElem);
        for(var i = 0; i < data.length; i++){
            var optionElem = angular.element("<option>");
            selectElem.append(optionElem.text(data[i].name));
        }
    }
}

});

控制器:

var myApp=angular.module('myApp', []);
myApp.controller('phoneController', function($scope) {
$scope.items = [
    {   name: 'Nokia Lumia 630'
    },
    {   name: 'Xiaomi Mi5'
    }
];
$scope.selectedItem = $scope.items[0].name;
$scope.select = function(name){
    $scope.selectedItem = name;
};
$scope.test = function(){
    alert("test");
};

});

我是这里的新手。角度版本 1.3 也许这取决于版本。我现在无法更改版本

如果要插入带有角度绑定的元素,则需要使用$compile函数。 没有测试这个,但这是正确的方向。

myApp.directive("selectList", function ($compile) {
    function link(scope, element, attr) {
        var data = scope.items;
        if (angular.isArray(data)) {
            var selectElem = $compile('<select ng-change="text()"></select>');
            element.append(selectElem);
            for (var i = 0; i < data.length; i++) {
                var optionElem = angular.element("<option>");
                selectElem.append(optionElem.text(data[i].name));
            }
        }
    }
    return {
        link: link
    };
});