我不能为我的生活弄清楚为什么控制台告诉我函数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?
});
}
}]);
答案 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
的本地函数,但您尝试在对象上调用名为persistAllSettings
和persistSetting
的方法没有这些名字的方法。 (这就像声明名为persistAllSettings
的变量并不突然使其显示为foo
一样。)
您很可能需要执行以下操作之一:
this.foo
和this.persistSetting
更改为this.persistAllSettings
和persistSetting
。persistAllSettings
和persistSetting
方法分别设置为persistAllSettings
和persistSetting
函数。答案 1 :(得分:0)
不要使用this.
在作用域中显示可见的函数,因为它用于访问实例方法。
$scope.$watchCollection('toPersist', function(newConfigSetting) {
persistSetting(newConfigSetting);
persistAllSettings();
});