无法在javascript中正确设置值

时间:2014-08-27 18:05:28

标签: javascript angularjs

我有1个文件(这是我的服务文件@ angular):

var columnNames = [];
var rowData;

return {

          setRowData: function (data) {
              rowData = data;
          },

          getRowData: function () {
              return rowData;
          },

          getColumn: function () {
              return columnNames;
          },

          addColumn: function (col) {
              columnNames.push({
                  name: col,
                  field: col
              });
          },

// etc

在另一个文件中,我在事件触发时调用set方法(控制器文件):

    var onParamComplete = function (response) {
        demoUtils.addColumn(response.data);
    };

    var onRunComplete = function (response) {
        // response.data is an array
        demoUtils.setRowData(response.data);
    };

最后在第二个控制器中,我将其设置为范围,以便我可以在数据绑定模板中查看该值:

      $scope.r = demoUtils.getColumn();
      $scope.q = demoUtils.getRowData();

我在

的HTML文件中显示它
{{ r }}
{{ q }}

由于某种原因,getColumn()方法的值正常工作但我的getRowData()方法不正常。

我调试了onRunComplete()中的值,发现分配正确,但我的getRowData()没有看到更新。当在那里放置断点时它也没有执行,但由于某种原因,$ scope.r正在改变,并且当它们的两个赋值断点都没有触发时,$ scope.q不是。

1 个答案:

答案 0 :(得分:0)

首先尝试初始化rowData变量

var columnNames = [];
var rowData = [];

如果您创建了plunkr示例,那么帮助您也会更容易......

你也可以试试angular.copy

setRowData: function (data) {
    rowData = angular.copy(data);
},