自动触发功能在angularjs

时间:2017-05-03 04:43:00

标签: angularjs

大家好我正在使用angulrajs使用服务从一个controller传递一个值到另一个控制器它工作正常但我需要的是controller 2中的服务值更改我得到服务值在一个范围内,当范围值改变时,我需要触发函数,当refresh值改变时,它被称为service函数,我需要在这里调用刷新函数我的小提琴

https://jsfiddle.net/ctawL4t3/10/

3 个答案:

答案 0 :(得分:3)

您可以$watch value.storeObject $scope.$watch('value.storedObject', function(newVal) { if(newVal !== '') { refresh() } }) 。虽然它不是最好的做法,但它适合这种功能。

refresh

working fiddle(打开控制台查看cordovan-plugin-fcm函数记录)

答案 1 :(得分:1)

您可以尝试使用角度默认$emit$broadcast,或尝试在自己的服务中执行2个简单的功能

angular.module('app').factory('StoreService', function() {

  var listeners = {};

  var emit = function(name, val) {
     if(listeners[name]) {
        listeners[name](val)
     }
  }

  var on = function(name, callback) {
       listeners[name] = callback;
  }

  return {
    emit: emit,
    on: on,
    storedObject: ''
  };
});

JSFiddle example

JSFiddle example $watch

JSFiddle example ng-change更好,因为您可以轻松使用debounce

答案 2 :(得分:0)

你可以使用广播功能 请检查此SO链接以查找相关答案

How to call a function from another controller in angularjs?

app.controller('One', ['$scope', '$rootScope'
    function($scope) {
        $rootScope.$on("CallParentMethod", function(){
           $scope.parentmethod();
        });

        $scope.parentmethod = function() {
            // task
        }
    }
]);
app.controller('two', ['$scope', '$rootScope'
    function($scope) {
        $scope.childmethod = function() {
            $rootScope.$emit("CallParentMethod", {});
        }
    }
]);