相关疑难解决方法(0)

Angular JS:如何绑定到promises

我试图将一个承诺绑定到一个视图.我不知道你是否可以直接这样做,但这就是我想要做的.我有什么想法我做错了吗?

注意:源有一点设计超时并使用静态数据,但这是为了使代码更容易诊断.

编辑: JSFiddle页面:http://jsfiddle.net/YQwaf/27/

编辑:解决方案:事实证明,你可以直接绑定承诺.我的原始代码有两个问题:

  1. 使用setTimeout()而不是angular的$ timeout是一个问题.Angular不知道在触发超时时需要刷新UI(你可以用$ scope解决这个问题.$ apply在setTimeout里面,或者你可以只使用$ timeout)
  2. 绑定到返回promise的函数是一个问题.如果它第二次被召唤,它又是另一个承诺.更好的方法是将范围变量设置为promise,并根据需要仅创建新的promise.(就我而言,这是在国家代码上调用$ scope.$ watch)

HTML:

<div ng:controller="addressValidationController">
    Region Code <select ng:model="regionCode" ng:options="r.code as r.name for r in getRegions()"/>
    Country Code<select ng:model="countryCode"><option value="US">United States</option><option value="CA">Canada</option></select>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

function addressValidationController($scope, $q) {
    var regions = {
        US: [{code: 'WI',name: 'Wisconsin'}, {code: 'MN',name: 'Minnesota'}], 
        CA: [{code: 'ON',name: 'Ontario'}]
    };
    $scope.getRegions = function () {
        var deferred = $q.defer();
        setTimeout(function () {
            var countryRegions = regions[$scope.countryCode];
            console.log(countryRegions);
            if(countryRegions === …
Run Code Online (Sandbox Code Playgroud)

promise angularjs

66
推荐指数
3
解决办法
6万
查看次数

标签 统计

angularjs ×1

promise ×1