gpt4 book ai didi

javascript - 如何在指令中使用 ng-change 函数?

转载 作者:行者123 更新时间:2023-11-28 15:08:49 24 4
gpt4 key购买 nike

我正在尝试自动完成,为此我正在使用标签输入。指令名称是 my-directive,在 Controller 内部我尝试调用 selectUser 函数,但它不起作用。

在自动完成中,您必须输入 4 个字母,例如:john,然后我将显示选项..

查看

  <body ng-app="myApp" ng-controller="appCtrl">
<my-directive apipoint="customerApi" modeldisplay="tags.selected" ng-model="tags.selected" change="selectUser(tags.selected)"></my-directive>
</body>

Controller

app.controller("appCtrl", function($scope){     
$scope.tags = {};
$scope.tags.selected = [];
$scope.customerApi = ['tags.json'];
$scope.selectUser = function(foo) {
$scope.aux = foo;
alert();
};
});

指令

app.directive("myDirective", ['$http',function($http){
return {
restrict: "E",
template : 'Here Use tag-input: <tags-input ng-model="modeldisplay"'+
'ng-change="change(modeldisplay)">'+
'<auto-complete source="loadTags($query)"></auto-complete>'+
'</tags-input>',
require: 'ngModel',
scope : {
modeldisplay: "=",
apipoint: "="
},
link : function(scope, element, attrs, ctrl){
scope.loadTags = function(query) {
return $http.get(scope.apipoint[0]);
};
scope.change = function(item){
ctrl.$setViewValue(item);
}
}
};
}]);

**演示/正在工作**

Plunker Demo

还有一件事我的方法是对的吗?,背后的原因是,在 Angularjs View 中,我想使用自动完成指令 oneline,我想将其作为通用方法...

最佳答案

为了运行 Controller 功能,您应该进行一些更改。

这是正在工作的笨蛋 Plunker

  1. 您使用的第三方指令不提供 ng-change 。是的,但它提供了 on-tag-linked="change1(modeldisplay)。所以 ng-change 不起作用。

  2. 您已在 my-directivechange 属性中传递了函数,并且您的指令中又存在另一个change function范围,这造成了误解。

  3. 您正在使用范围访问传递的函数,但您没有在指令隔离范围中提到这一点。这就是为什么传递的函数在指令范围内无法访问的原因。

关于javascript - 如何在指令中使用 ng-change 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37592409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com