簡體   English   中英

帶有“ controller as”的Angular,Typescript和Angular UI

[英]Angular, Typescript and Angular UI with “controller as”

主題中的組合讓我很難受,我敢肯定這是一個簡單的錯誤。

控制器:

  class JobCtrl {

      job: Object;  

      public $inject = ['$log', '$resource', 'ApiDataEndpoint', '$stateParams'];  
      constructor(public $log, public $resource, public ApiDataEndpoint, public $stateParams ) {      
           var JobRes = $resource(ApiDataEndpoint.url+'job/:id', {});

           var jobCall = JobRes.get({ id: $stateParams.id},function(){
               this.job = jobCall;
           })
      }  
  }

路由的定義如下:

.state('app.job', {
        url: '/jobs/:id',
        views: {
            'menuContent': {
                templateUrl: 'templates/job.html',
                controller: 'JobCtrl',
                controllerAs: 'vm'
            }
        }
    })

在我看來,我得到了:

<p>
 Name: {{vm.job.Name}}
</p>

但是,當回調返回時,視圖永遠不會更新。 我猜這是一個異步問題或范圍問題。 獲取資源的工作原理完美,視圖永遠不會更新。 看來我無法在回調中設置此作業。 我在這里想念什么?

我認為您可以執行以下操作(未經測試):

var jobCall = JobRes.get({ id: $stateParams.id},function(response){
    job = response.data;
})

這在實現方法的回調函數中不可用。 更改為使用lambda,它將是:

由此:

var jobCall = JobRes.get({ id: $stateParams.id},function(){
           this.job = jobCall;
       })

對此:

var jobCall = JobRes.get({ id: $stateParams.id}, (response) => {
           this.job = response.data;
       });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM