TypeError:<>不是一个功能。难倒

时间:2016-01-04 03:01:57

标签: javascript

我不能为我的生活弄清楚为什么控制台告诉我函数persistSetting()和persistAllSettings()不是函数。

这是一个angularJS控制器。

是否与函数中的异步方法调用有关?

configApp.controller('settingsController', ['$scope', function($scope) {
  $scope.toPersist = {
    discreteValue: 6,
    qualityCheckBox: false
  };
  $scope.$watchCollection('toPersist', function(newConfigSetting) {
      this.persistSetting(newConfigSetting);
      this.persistAllSettings();
  });
  function persistAllSettings() {
      chrome.storage.sync.set(toPersist, function() {
        // notify user?
      });
  }
  function persistSetting(someSetting) {
    chrome.storage.sync.set(someSetting, function() {
      // notify user?
    });
  }
}]);

2 个答案:

答案 0 :(得分:0)

您有名为<div class='row'> <div class='col-xs-8' style='background-color:red'>first</div> <div class='col-xs-4 text-right' style='background-color:yellow;'>second</div> </div> persistSetting的本地函数,但您尝试在对象上调用名为persistAllSettingspersistSetting方法没有这些名字的方法。 (这就像声明名为persistAllSettings的变量并不突然使其显示为foo一样。)

您很可能需要执行以下操作之一:

  • 分别将this.foothis.persistSetting更改为this.persistAllSettingspersistSetting
  • 将该对象上的persistAllSettingspersistSetting方法分别设置为persistAllSettingspersistSetting函数。

答案 1 :(得分:0)

不要使用this.在作用域中显示可见的函数,因为它用于访问实例方法。

$scope.$watchCollection('toPersist', function(newConfigSetting) {
    persistSetting(newConfigSetting);
    persistAllSettings();
});