Javascript AngularJS控制器未从服务更新模型

Javascript AngularJS控制器未从服务更新模型,javascript,angularjs,Javascript,Angularjs,我是Angular的新手,但我不明白为什么控制器只在某些情况下从服务更新数据。。。 object1和2已正确更新,但Object3未正确更新。 似乎Service.get3()只启动了一次。 我知道角度监视对象的变化,对于object1和object2(这是对object1的引用)很好,顺便说一句,它很棒。 但它不适用于object3。。。好吧,这不是一个参考。。。 问题是:如何在服务中构建新对象 谢谢,, 菲利普 var-app=angular.module('app',[]); 应用程序工厂

我是Angular的新手,但我不明白为什么控制器只在某些情况下从服务更新数据。。。 object1和2已正确更新,但Object3未正确更新。 似乎Service.get3()只启动了一次。 我知道角度监视对象的变化,对于object1和object2(这是对object1的引用)很好,顺便说一句,它很棒。 但它不适用于object3。。。好吧,这不是一个参考。。。 问题是:如何在服务中构建新对象

谢谢,, 菲利普

var-app=angular.module('app',[]);
应用程序工厂(‘服务’[
函数(){
var object1=[“TOTO”];
返回{
get1:function(){
返回对象1;
},
get2:function(){
var object2=object1;
返回对象2;
},
get3:function(){
var object3=[];
/*
object1.forEach(函数(条目){
对象3.推送(进入);
控制台日志(条目);
});
*/
对于(i=0;i

前两个绑定到object1。第三个对象绑定到一个不同的数组。

如前所述,第三个对象是一个不同的数组。为了让它通知控制器更改,您可能需要在其上注册手表:


谢谢$从控制器查看服务更新是一种解决方法,还是共享新数据的正确方法?我知道最好的办法是分享参考资料,但这并不总是可能的。手表是生活中不可或缺的一部分。
var app = angular.module('App', []);

app.factory('Service', [

  function() {
    var object1 = ["TOTO"];
    return {
      get1: function() {
        return object1;
      },
      get2: function() {
        var object2 = object1;
        return object2;
      },
      get3: function() {
        var object3 = [];
        /*
                object1.forEach(function(entry) {
                    object3.push(entry);
                    console.log(entry);
                });
                */

        for (i = 0; i < object1.length; i++) {
          object3.push(object1[i]);
        }

        return object3;
      },
      set: function(newValue) {
        object1.push(newValue);
      }
    }
  }
]);

app.controller('Controller', ['$rootScope', '$scope', 'Service',
  function($rootScope, $scope, Service) {

    $scope.object1 = Service.get1();
    $scope.object2 = Service.get2();
    $scope.object3 = Service.get3();

    $scope.set = function() {
      Service.set("TITI");
    }
  }
]);
$scope.$watch(Service.get3, function(val) {
   $scope.object3 = Service.get3();
    });