Javascript 在自定义Umbraco数据类型中加载$scope.model.value时JSON格式不正确
我偶尔会注意到数据中有奇怪的行为,Umbraco使用初始化我的数据类型Javascript 在自定义Umbraco数据类型中加载$scope.model.value时JSON格式不正确,javascript,angularjs,json,umbraco7,Javascript,Angularjs,Json,Umbraco7,我偶尔会注意到数据中有奇怪的行为,Umbraco使用初始化我的数据类型$scope.model.valuevalue 我正在使用Umbraco 7.11.1,我的自定义数据类型是围绕一个复杂的基于JSON的数据模型构建的 在“保存和发布”(从Umbraco后台)过程中,Umbraco似乎接受控制器存储在$scope.model.value中的JSON-不显示错误对话框,不记录控制台错误等 但是,当后台重新加载时,Umbraco会尝试使用部分格式错误的JSON字符串初始化我的数据类型,而不是使用预
$scope.model.value
value
我正在使用Umbraco 7.11.1,我的自定义数据类型是围绕一个复杂的基于JSON的数据模型构建的
在“保存和发布”(从Umbraco后台)过程中,Umbraco似乎接受控制器存储在$scope.model.value
中的JSON-不显示错误对话框,不记录控制台错误等
但是,当后台重新加载时,Umbraco会尝试使用部分格式错误的JSON字符串初始化我的数据类型,而不是使用预期的JSON对象(即以前保存的对象)
我遵循通过angularjs控制器实现自定义数据类型的常规模式:
angular.module('umbraco')
.controller('MyDataType', ['$scope', function ($scope) {
var loadedData = $scope.model.value;
// Do stuff with "loadedData"
$scope.model.value = loadedData;
}])
当我的JSON模型中有大量数据时(即序列化为~150个字符或更多的JSON),问题似乎就会出现
我可以存储在Umbraco数据类型中的数据量是否有限制?还是我在这里忽略了什么 此问题的解决方案是清理控制器存储在
$scope.model.value
中的JSON数据
Umbraco似乎对angularjs放入范围变量($$hashKey)的额外元数据“东西”很敏感,这似乎是导致我的数据类型随后用格式错误的JSON字符串而不是预期的JSON对象初始化的原因
最后,我选择了:
$watcher
以使$model.scope.value
与对$scope.myModel
所做的任何更改同步$model.scope.value
angular.module('umbraco')
.controller('MyDataType', ['$scope', function ($scope) {
$scope.myModel = cloneValue($scope.model.value)
var endWatcher = $scope.$watch('myModel', function() {
$scope.model.value = cloneAndSanitizeMyModel($scope.myModel)
});
$scope.$on('$destroy', function() {
endWatcher();
});
}])
AngularJS放入范围变量(“$$hashKey”等)。如果您使用angular.toJson(obj)而不是JSON.stringify(obj),那么angular将为您删除这些内部使用值。