gpt4 book ai didi

angularjs - 创建更新 ng-model 的 angular-js 指令

转载 作者:行者123 更新时间:2023-12-02 21:43:09 25 4
gpt4 key购买 nike

我正在尝试创建一个包装 twitter typeahead 插件的指令。到目前为止我所拥有的是:

HTML:

<input ng-twitter-typeahead type="text" ng-model="participant" data="exampleData" />
{{ participant }}

当我在预输入中选择某些内容时,我希望更新“参与者”的值。预输入本身工作正常,但我无法捕获所选值。下面是 JavaScript:

var app = angular.module('myApp', [])
app.directive('ngTwitterTypeahead', function () {
return {
restrict: 'EA',
scope: {
data: '='
},
link: function ($scope, $element, $attrs) {
$element.typeahead($scope.data);

$element.bind('typeahead:selected', function(obj, datum) {
// I really don't know how to do this part
// the variable 'datum' is what I want to be passed to ng-model
// I tried things like:
// Including the ngModelController and typing:
// ngModel.$setViewValue(datum)
// but that didn't work.
}
};
});

当谈到 AngularJS 时,我显然错过了一些基本的东西。任何帮助将不胜感激!

编辑**

我找到了解决方案。我有时很无知:

angular.module('siyfion.ngTypeahead', [])
.directive('ngTypeahead', function () {
return {
restrict: 'C',
scope: {
datasets: '=',
ngModel: '='
},
link: function ($scope, $element, $attrs) {
$element.typeahead($scope.datasets);

$element.bind('typeahead:selected', function(obj, datum) {
$scope.$apply(function() {
$scope.ngModel = datum;
});
})
}
};
});

最佳答案

您可以在指令中要求 ngModel Controller 。它将使您能够访问 link 函数内的模型 Controller ,请参阅 http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

在这里您可以找到如何在现实生活中使用它的示例 http://suhairhassan.com/2013/05/01/getting-started-with-angularjs-directive.html#.UhSdDOZdXUE

关于angularjs - 创建更新 ng-model 的 angular-js 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18352873/

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