0

我不确定为什么这个客户数据不更新 shoppingCart.html 模板,这个函数是工厂返回的共享模型类的一部分。

$http 已注入,但模型类无法在承诺结果中自行更新。所以模板终于更新了。最好的方法是什么?

http://plnkr.co/edit/ro6FTa5AbhnzrMsnWIyi?p=preview

    shoppingCart.prototype.fillCustomerInformation = function()
    {
        var customerDeferred = this.$q.defer();
        var customerApi = customerDeferred.promise;

        this.$http.get('/customer.json').then(function (result) {
            customerDeferred.resolve(result.data);
            console.log(result.data);
            this.customer.firstName = result.data.firstName;
            this.saveItems()
        });

     }
4

2 回答 2

1

问题是,this那是指成功的 ajax 处理程序。你可以这样做:

shoppingCart.prototype.fillCustomerInformation = function()
    {
        var customerDeferred = this.$q.defer();
        var customerApi = customerDeferred.promise;
        var that = this;

        this.$http.get('/customer.json').then(function (result) {
            customerDeferred.resolve(result.data);
            console.log(result.data);
            that.customer.firstName = result.data.firstName;
            that.saveItems()
        });

     }
于 2013-11-09T10:03:23.253 回答
0

好吧,首先你firstName拼错了 inresult.data.firtName而不是result.data.firstName

其次,有很多方法可以将服务成员绑定到范围变量,但我发现最好的方法是做类似的事情

$scope.$watch(
  function () {
    return DataService.cart;
  },
  function (newVal, oldVal) {
    // do your stuff to manage updates here
  }
);
于 2013-11-08T21:05:59.420 回答