代码重构,如何优雅地覆盖对象值

时间:2015-11-25 16:40:48

标签: javascript angularjs

所以我打电话给工厂,一切正常后我想重置输入字段的值,正如你在下面的代码中看到的那样,我是手工完成的。

null

我不喜欢这种看起来的方式,但是无法想出解决问题的方法

1 个答案:

答案 0 :(得分:2)

我自己重构这段代码的方法:

vm.submitRequest = submitRequest;

/**************/

function submitRequest() {
    return requestBook()
        .then(bookReceived)
        .then(clearController);

}

function requestBook() {
    return requestedBooksFactory.requestBook(vm.title, vm.author, vm.link, vm.destination, vm.currentUser, vm.comments);
}

function bookReceived(book) {
    vm.requestedBooks.allBooks.push(book);
    vm.requestedBooks.header = requestedBooksFactory.requestedText(vm.requestedBooks.allBooks.length);
}

function clearController() {
    vm.title = '';
    vm.author = '';
    vm.link = '';
    vm.comments = '';
    vm.destination = false;
    vm.submitted = false;
}

来源不应该太拉链。它应该是可读和清晰的 不要使用匿名函数来实现长方法 它们是为短迭代器设计的 不要害怕功能名称,他们在这里为你而不是解析器 对于解析器,您将使用混淆器。

但我试着发布你想要的东西:)

   function clearController() {
     ['title', 'author', 'link', 'comments'].forEach(f => {vm[f] = '';});
     ['destination', 'submitted'].forEach(f => {vm[f] = false;});
   }