如何将角度控制器与现有对象绑定

时间:2014-02-20 14:38:15

标签: javascript angularjs

我有js对象:

var Test = function () {

  var x;
  var y;

  this.start = function() {
    //some action
    if ( x > y) { 
      x = x* 10; // now update angular $scope.x
    }
  };

  this.end = function() {
    //other action
  };


  function anotherAction() {

  };
};

我有一个角度控制器

testModule.controller('TestCtrl', function ($scope, $location) {
  var test = new Test();

  //$scope.x = value from test
}

我想将角度控制器与Test实体绑定。例如。我想抓住,当test.end()被调用并获得返回值或将值从test.end()传递给angular时。有可能吗?

更新

x和y可以在test.start()方法中更新,我想在更新x或y后将新值(x或y)传递给角度控制器。 (听x或y的更改,如角度听模型)

如何以角度捕捉事件?

抱歉新手问题。

1 个答案:

答案 0 :(得分:0)

使测试成为公开x / y字段的工厂或服务:

var Test = function() {

     var values = {
          x: 0,
          y: 0
      };

      return {
          values: values,
          start: function () {
              values.x++;
              values.y++;
          },
          end: function () { }
      }
}

angular.service('Test', Test);

现在在您的范围内,您可以说:

angular.controller('TestController', ['$scope', 'TestSvc', function(
        $scope, testSvc) {
    $scope.test = testSvc.values;
});

您的应用中使用TestSvc的任何地方都可以通过TestSvc.values访问x / y的更新值

(编辑:忘记了控制器中的.values引用) (编辑2:更改了测试功能的主体,因为它原来不能正常运行)