gpt4 book ai didi

javascript - 我如何访问 Angular JS 中 .then() 中定义的 $scope 数组?

转载 作者:行者123 更新时间:2023-12-02 14:43:57 24 4
gpt4 key购买 nike

这是我的 Controller 代码

 $http.get(config.url+'/api/employees-suggestion/??token=' + currentUser.token + '&filterEmployee='+ "10000191")
.then(function(response) {
console.log(response);
$scope.id_list = [
{employeeName: 'Hello'},
];
console.log("id_list="+$scope.id_list);
}, function(response) {
}
)

我想获取'$scope.id_list'的值并在另一个外部js文件中使用它(这是 ionic 自动完成的自定义指令)。这是指令代码,

    angular.module('autocomplete.directive', [])

.directive('ionicAutocomplete',
function ($ionicPopover) {
var popoverTemplate =
'<ion-popover-view style="margin-top:5px">' +
'<ion-content>' +
'<div class="list">' +
'<a href="#/tab/badgeboard" class="item" ng-repeat="item in id_list | filter:inputSearch" ng-click="selectItem(item)">{{item.employeeName}}</a>' +
'</div>' +
'</ion-content>' +
'</ion-popover-view>';
return {
restrict: 'A',
scope: {
params: '=ionicAutocomplete',
inputSearch: '=ngModel'
},
link: function ($scope, $element, $attrs) {
var popoverShown = false;
var popover = null;
$scope.id_list = $scope.params.id_list;

//Add autocorrect="off" so the 'change' event is detected when user tap the keyboard
$element.attr('autocorrect', 'off');


popover = $ionicPopover.fromTemplate(popoverTemplate, {
scope: $scope
});
$element.on('focus', function (e) {
if (!popoverShown) {
popover.show(e);
}
});

$scope.selectItem = function (item) {
$element.val(item.display);
popover.hide();
$scope.params.onSelect(item);
};
}
};
}

);

{{item.employeeName}} 不会在弹出窗口中打印任何内容,因为“id_list”为空(这是不正确的)。

如果我输入以下代码

$scope.id_list = [
{employeeName: 'Hello'},
];

在.then()之外一切正常{{item.employeeName}}在弹出窗口中打印employeeName

这是 html( View )中的代码,它是一个输入字段并显示 drop-pop-over

        <input type="text" ionic-autocomplete="{id_list: id_list, onSelect:onSelect}"placeholder="Search ?" ng-model="search">

我尝试了 $rootScope 但失败了。我究竟做错了什么?我该如何解决这个问题?

最佳答案

一些理论:

$http.get 返回的内容称为 promise 。它被异步解决(当成功时)或被拒绝(当出现问题时)。如果您引用 Angular Promise 文档,then() 接受 2 个函数,一个用于解析,一个用于拒绝。

通常 $http 调用应该在 Angular 服务内部进行(“服务”或“工厂”,这两者非常相似)。这样的服务可以注入(inject)到任何 Controller 或指令中并可以重用。

就您而言:

您的 Promise 很有可能被拒绝,因此执行的是您传递给 then() 的第二个函数,并且它当前为空。

首先检查这个,然后告诉我。

关于javascript - 我如何访问 Angular JS 中 .then() 中定义的 $scope 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767329/

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