1

これで新しい。

2 つの div があります。サーバーに新しい値を投稿するために使用すると、投稿アクションは正常に機能します。

この投稿が他の div のスコープを確実に更新するにはどうすればよいですか? (ng-repeat を使用して新しいエントリで div を更新するには)

更新時にデータが表示されるため、HTTP.post アクションが機能しているようです。

$scope.apply() を試しましたが、機能していないようです。

// this is the controller to get the data from the server
  app.controller('projectsController', 
       function projectsController($scope, projectsFactory){ 
               $scope.projects =    projectsFactory.query();
       }); 

サーバーからデータを取得するファクトリ

    app.factory('projectsFactory', 
       function($resource,localStorage, $rootScope, $http){
         return $resource('/api/project:id', {id: '@id'});
        });

これは、ユーザー入力を受け取り、サーバーにポストするコントローラーです。

     app.controller('projectEditController', function($scope, projectEdit){
                $scope.projectEdit =    projectEdit;
     });

そして、データをサーバーに投稿するサービス

         app.service('projectEdit', 
                   function projectEdit(localStorage,$rootScope, $http) {

        var self = this;

        self.add = function(newProject,projects) {
            newProject = angular.copy(newProject);

              var newProject = (JSON.stringify(newProject));

        return $http.post('/api/project', newProject )
                    .then(function(response) {
                     newProject.id = response.data.id;

    });

};

データをサーバーにうまく投稿するので、これは問題ないようです。

私が理解しようとしているのは、「$scope.projects = projectsFactory.query();」を取得する方法です。投稿操作が完了したら更新します。

これにより、目標である HTML の表示が更新されます。

うまくいけば、これは優れた開発者にとって簡単な解決策ですが、私は困惑しています! 御時間ありがとうございます。

コナー

4

1 に答える 1

0

ラッパー div を 1 つ作成し、コントローラーを ng-controller でそれに設定します。2 つの div をラッパー div に配置します。これで、コントローラーによって作成されたスコープが両方の div で使用できるようになりました。これは簡単な方法です。何かがそのスコープ内のデータを更新し、dom 内にその変数を参照する他のものがある場合、dom は必要に応じて更新されます。子 div ごとに異なるコントローラーが本当に必要な場合は、それで問題ありません。継承されたスコープには注意してください。このような状況では、コントローラーを 1 つだけ持つ方がはるかに簡単です。ところで、scope.apply() について言及されているのを見ました。apply() は実際の JavaScript 関数であり、必要な関数ではないことに注意してください。scope.$apply() を呼び出す必要があります。$apply は angular 関数です。混乱を避けるために、代わりに scope.$digest を呼び出すことができます。

于 2013-09-08T16:58:09.263 に答える