Angularjs 如何在三元运算符上传递对象的承诺?

Angularjs 如何在三元运算符上传递对象的承诺?,angularjs,promise,md-autocomplete,Angularjs,Promise,Md Autocomplete,因此,我正在AngularJS应用程序上实现AngularMaterial Design md autocomplete指令。我想向控件发送一个承诺,这样如果查询没有完全加载,它就不会抛出错误;还可以将控件中的加载条视为“加载”的信号 这是数据尚未加载完成时出现的错误: TypeError:无法读取未定义的属性“slice” 这就是我获取数据的方式: $http({ method: 'GET', url: $rootScope.ap

因此,我正在AngularJS应用程序上实现AngularMaterial Design md autocomplete指令。我想向控件发送一个承诺,这样如果查询没有完全加载,它就不会抛出错误;还可以将控件中的加载条视为“加载”的信号

这是数据尚未加载完成时出现的错误:

TypeError:无法读取未定义的属性“slice”

这就是我获取数据的方式:

        $http({
            method: 'GET',
            url: $rootScope.apiURL+'getAllCustomers/'+session,
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).success(function(response){
            if(response.ErrorMessage === null && response.Result !== null){
                mixpanel.track("Customers loaded for POS");
                self.customers = Object.keys(response.Result).map(function (key) {return response.Result[key]});
            }
        })
        .error(function(data){
            alert('Something went wrong. Please try again.');
            mixpanel.track("Error loading customers");
        });
这是我的html:

<md-autocomplete
        ng-disabled="ctrl.isDisabled"
        md-no-cache="ctrl.noCache"
        md-selected-item="ctrl.selectedItem"
        md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
        md-search-text="ctrl.searchText"
        md-selected-item-change="ctrl.selectedItemChange(item)"
        md-items="item in ctrl.querySearch(ctrl.searchText)"
        md-item-text="item.Name"
        md-min-length="0"
        placeholder="Buscar Cliente">
    <md-item-template>
        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.Name}}</span>
    </md-item-template>
    <md-not-found>
        No states matching "{{ctrl.searchText}}" were found.
        <a ng-click="ctrl.newCustomer(ctrl.searchText)">Create a new one!</a>
    </md-not-found>
</md-autocomplete>

谢谢

将相关代码包装到函数中:

function foo()
  {
  return foo.self.customers.slice(0, 50);
  }

foo.self = self;
然后将语句更改为:

var results = query ? self.customers.filter( createFilterFor(query) ) : foo
并以三元逻辑的形式在模板中运行类型检查:

(typeof ctrl.querySearch(ctrl.searchText) === "function") ? item in ctrl.querySearch(ctrl.searchText)() : item in ctrl.querySearch(ctrl.searchText) 
参考资料


将相关代码包装成函数:

function foo()
  {
  return foo.self.customers.slice(0, 50);
  }

foo.self = self;
然后将语句更改为:

var results = query ? self.customers.filter( createFilterFor(query) ) : foo
并以三元逻辑的形式在模板中运行类型检查:

(typeof ctrl.querySearch(ctrl.searchText) === "function") ? item in ctrl.querySearch(ctrl.searchText)() : item in ctrl.querySearch(ctrl.searchText) 
参考资料


那是什么
,延期在那里做什么,顺便说一句?尝试初始化
self.customers=[]
,然后它将在将来从Promise获得分配的值这是什么
,延迟在那里做什么,顺便说一句?尝试初始化
self.customers=[]
之后,它将从承诺中获得分配值