0

「User」がサービスで、「User.get」がリクエストを実行するメソッドの場合。

<button class="btn" ng-click="User.get(users,'id,uname,email,pw')">
<p>{{users}}</p>

そのコード例でリクエストデータをスコープ変数「users」に割り当てるにはどうすればよいですか? 私はそのコード スタイルが好きですが、それを実装する方法がわかりません。何か案は?

サービス プロバイダーの例:

angular.module('User',[]).
provider('User', function() {
    var path = 'user.php';
    this.$get = function($http) {
        var r = {};
        r.get = function(variable,fields){
            $http.get(path+'?fields='+fields).
            success(function(data){
                //variable = data;
            });
        }
        return r;
    };
    this.setPath = function(p){path = p;};
});
4

1 に答える 1

4

コントローラーを使用し、その中にハンドラーを記述しng-clickます。次に例を示します。

コントローラ:

function Ctrl($scope) { 
    $scope.getUsers = function (fields) {
        $scope.users = User.get(fields);
    }
}

HTML:

<div ng-controller="Ctrl">
    <button class="btn" ng-click="getUsers('id,uname,email,pw')">
    <p>{{users}}</p>
</div>

thisこれを行う別の方法は、参照 (スコープ) とプロパティ名 ('users') をサービスに渡すことです。

<button class="btn" ng-click="User.get(this, 'users', 'id,uname,email,pw')">

そして、Userサービスで、結果を取得した後、次のようにします。

r.get = function(scope, prop, fields){
        $http.get(path+'?fields='+fields).
        success(function(data){
            scope[prop] = data;
        });
}

where scope= this and prop= 'users'.

私見、最初のアプローチが最良のアプローチであり、2番目のアプローチは少しハックに聞こえます。

于 2013-02-06T18:51:42.850 に答える