2016-01-21 3 views
3

Я новичок в машинописи/ecma6 и хотел бы написать этот угловой контроллер в машинописи:углового контроллера в машинописи

.controller('DashCtrl', function($scope, wpFactory) { 

$scope.posts = []; 
$scope.images = {}; 

wpFactory.getPosts(3).then(function (succ) { 
    $scope.posts = succ; 
    angular.forEach(succ, function(value, index) { 
    $scope.setUrlForImage(index, value.featured_image); 
    }); 
}, function error(err) { 
    console.log('Errror: ', err); 
}); 

$scope.setUrlForImage = function(index, id) { 
    wpFactory.getMediaDataForId(id).then(function (succ) { 
    $scope.images[index] = succ.source_url; 
    }); 
}; 

}) 

с моим фактическим подходом у меня есть проблемы с областью видимости методов в классе:

class DashCtrl { 

public $inject = ['wpFactory']; 

posts: any[]; 
images: any[]; 

constructor(public wpFactory: any) { 
    this.getPosts(); 
} 
getPosts(){ 
    ... ? 
} 

setUrlForImage(succ:any, index:any, id:any){ 
    ... ? 
} 

} 

Интересной частью для меня является разработка методов getPosts и setUrlForImages. Мы ценим любые предложения.

ответ

3
class DashCtrl { 

    public $inject = ['wpFactory']; 

    posts: any[]; 
    images: any[]; 

    constructor(public wpFactory: any) { 
    this.getPosts(); 
    } 

    getPosts() { 
    this.wpFactory.getPosts(3).then(succ => { 
     this.posts = succ; 
     angular.forEach(succ, (value, index) => { 
     this.setUrlForImage(index, value.featured_image); 
     }); 
    }, (err) => { 
     console.log('Errror: ', err); 
    }); 
    } 

    setUrlForImage(succ:any, index:any, id:any) { 
    this.wpFactory.getMediaDataForId(id).then(succ => { 
     this.images[index] = succ.source_url; 
    }); 
    } 
} 
+1

Устранение форматирования? Также: возможно, вы получите некоторую информацию о синтаксисе '=>' в TypeScript. Также вопрос с моей стороны, вам не нужно что-то особенное в конфигурации, чтобы позволить классам TS, которые могут получить доступ к '$ scope', используя' this'? – froginvasion

+0

привет, ребята, спасибо за ваши ответы. , к сожалению, оба решения не работали. моя проблема с вашим фактическим кодом для this.setUrlImage в getPosts() есть: ts2346 - поставленные параметры не соответствуют какой-либо сигнатуре целевого вызова. и сгенерированный код, который мне нужен для вызова службы rest, не определен. –

+0

@froginvasion взгляните на это http://stackoverflow.com/questions/25266555/using-this-instead-of-scope-with-angularjs-controllers-and-directives для вашего последнего вопроса и https: // developer. mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functionsfor arrow functions (=>) –

Смежные вопросы