[AngularJS]不能将该值赋给一个变量角工厂内部吗?

发布时间: 2017/4/16 16:26:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如果变量是一个数组,然后我能推里面的对象,从而获取内部控制器值但是如果直接给该变量分配的对象,是不能够做到这一点

请人帮我实现这一目标。

这里是提琴的链接

角的代码︰

//angular.js example for factory vs service
var app = angular.module('myApp', []);

app.factory('testFactory', function(){
     var countF={};//= [{abc:'aaa'}];
    return {

        getCount : function () {

            return countF;
        },
        incrementCount:function(){
          //countF.push({aaaa:'jshfdkjsf'});
           countF={aaaa:'jshfdkjsf'};
            //return countF;
        }
    }               
});

function FactoryCtrl($scope,testFactory)
{
    $scope.countFactory = testFactory.getCount();
    $scope.clickF = function () {
       testFactory.incrementCount();
       // console.log($scope.countFactory);
    };
}

HTML 代码︰

<div ng-controller="FactoryCtrl">

    <!--  this is never updated after count is changed! -->
    <p> This is my countFactory variable : {{countFactory}}</p>

    <p> This is my updated after click variable : {{countF}}</p>

    <button ng-click="clickF()" >Factory ++ </button>
</div>

解决方法 1:

你的问题是在这段代码-

 incrementCount:function(){
        //countF.push({aaaa:'jshfdkjsf'});
        countF={aaaa:'jshfdkjsf'};
        //return countF;
 }

在这里,你不是 countF initizalizing aaa 属性对象要重新创建它

初始化-countF = {};

添加一个属性-

  right `countF.aaa = "value";`

  wrong `countF = { aaa : 'value' }`

解决方案-

incrementCount:function(){
    countF.aaaa = 'jshfdkjsf';
 }
赞助商