2016-05-09 18 views
1

javascriptと角度を使用した初めての初めてのサービスです。 ので、イムは、角度でWebページを開発し、私はこのようなコントローラー書いた:私はブランドのいくつかのタブを持っていると私は1つをクリックすると、そのブランドは、コントローラが割り当てられている角度と角度のサービスとコントローラの使い分けの違い

/*BrandController to manage the html content of a single brand */ 
.controller('BrandController', [function(){ 
    this.brand = {}; 

    this.isSet = function(checkBrand) { 
     return this.origin === checkBrand; 
    }; 

    this.setBrand = function(activeBrand) { 
     this.brand = activeBrand; 
    }; 

}]) 

を。

<a href ng-click="BrandController.setBrand(brand)"> 
     <h4>{{brand.name}}</h4></a> 

そして、私はこのようにその内容を示しています。だから、

<b>Nombre</b><br> 
{{BrandController.brand.name}}<br><br> 
<b>Marca</b><br> 
{{BrandController.brand.brand}}<br><br> 

、それは私が望んでいたように動作しますが、友人は、これはそれを行うには、正しい方法ではありませんでした私に言いました。私はブランドの情報を渡すために、サービスを作成する必要があります。そして、我々はこのようにそれを得た:あなたが見ることができるように、これは、あまりにも動作します

/* BrandController to manage the html content of a single brand */ 
.controller('BrandController', function(BrandService, $scope){ 
    $scope.brand = { 
    }; 
    $scope.setBrand = function(brand){ 
     $scope.brand = brand; 
    }; 
    $scope.isSet = function(brand){ 
     return $scope.brand === brand; 
    }; 

}) 

.service('BrandService', function(){ 
    var brand = {}; 

    var isSet = function(checkBrand) { 
     return brand === checkBrand; 
    }; 

    var setBrand = function(activeBrand) { 
     brand = activeBrand; 
    }; 

    return{ 
     isSet: isSet, 
     setBrand: setBrand 
    }; 

}); 

をはるかにコードであり、そして私は、なぜ私が代わりにサービスを作成する必要があります理解することができませんでした。 私の例では、それを行う最良の方法と、なぜ私が非常に感謝するのかを説明することができます。

ありがとうございます。

答えて

1

サービスは本当に便利ですが、状況はいくつかあります。 サービスを使用すると、コントローラの標準を維持しながらデータを読み取るロジックを抽象化できます。データ構造が変更された場合は、コントローラに触れることなくサービスのロジックを変更することができます。

コントローラはビ​​ューにデータをバインドする責任があり、データの受信または構造化には注意しないでください。

サービスもシングルトンなので、データのクロスコントローラまたはコントローラとディレクティブの間に格納できます。

これらの概念のほとんどは、データサービスです。 hereには、ベストプラクティスといくつかの論理的利点を説明する良い文書があります。

これが役に立ちます。

+0

ありがとうございます。そのドキュメントは本当にうれしくて、私には大いに役立ちます。 –

+0

それを知ってうれしいです。また、toddmotto.comには角度についての本当の良い投稿があります。返事が必要な場合は、あなたは私に答えを与えることができますか?多くのthxリック – rick

関連する問題