在$ watch块中设置Angular中的变量

时间:2014-09-27 03:26:17

标签: angularjs watch

我有以下内容:

        var s= '';
        $scope.$watch('foos', function(newValue, oldValue) {

            for(var i=0; i< newValue.length; i++){
                var name= newValue[i].barName;
                //console.log(name);
                s += name;
                s += "--";
            }
        });
        console.log(s);

&#39; FOOS&#39;是来自Restangular电话,所以它是一个承诺,所以我不得不把它包装成$ watch。 我想设置&#39;,然后使用&#39; s&#39;在$ watch块之外,就像我有console.log()的地方一样。 现在的方式,&#39; s&#39;永远是空的,我怎么做到这一点,以便&#39; s&#39;在$ watch块中设置后使用?

1 个答案:

答案 0 :(得分:0)

只有在准备就绪后才能使用s,这是其中一种方法:

 link: function($scope, $element, $attrs) {
    var s= '';
    $scope.$watch('foos', function(newValue, oldValue) {

        for(var i=0; i< newValue.length; i++){
            var name= newValue[i].barName;
            //console.log(name);
            s += name;
            s += "--";
        }
        if(s.length > 0)
            doStuffWithS($scope, $element, $compile, s);
    });


}

    function doStuffWithS($scope, $element, $compile, s) {
        // it goes here...

        $element[0].outerHTML("<div class='me'>" + s + "</div>";
        $compile($element.contents())($scope);

     }

我得到的错误是:TypeError:无法读取属性&#39; replaceChild&#39;为null