我创建自定义属性编辑器,它使用Umbraco中的所有可用语言,如:
angular.module("umbraco").controller("MyLanguageController", function ($scope, myLanguageService) {
$scope.items = [];
myLanguageService.getAll().then( function( result ) {
if( result && result.data && result.data.length ) {
$scope.items = result.data;
}
} );
});
和
angular.module("umbraco.resources")
.factory("myLanguageService", function ($http) {
return {
getAll: function () {
return $http.get("/umbraco/backoffice/MyControllerSide/GetAll", { "dataType": "json" });
}
};
});
观点:
<div ng-controller="MyLanguageController" id="language">
<ul>
<li ng-repeat="item in items" class="checkbox">
<label>
<input type="checkbox" value="{{item.IsoCode}}"> {{item.CultureName}}
</label>
</li>
</ul>
</div>
包清单包含:
{
propertyEditors: [
{
alias: "MyLanguageAlias",
name: "Language Selector",
icon: "icon-umb-translation",
hideLabel: true,
valueType: "JSON",
editor: {
view: "~/App_Plugins/MyLanguageSelector/backoffice/view.html"
}
}
],
...
和C#代码:
[HttpGet]
public JsonResult GetAll()
{
IEnumerable<ILanguage> languages = ApplicationContext.Services.LocalizationService.GetAllLanguages() ?? new List<ILanguage>(0);
IEnumerable<TranslationLanguageModel> model =
languages.Select(s => new MyLanguageModel { CultureName = s.CultureInfo.DisplayName, IsoCode = s.IsoCode });
return Json(model, JsonRequestBehavior.AllowGet);
}
我在Umbraco / Developer部分创建了新数据类型,并将其添加到文档类型中:
当我保存文档时,该属性的值为null。我不明白为什么。
回到内容时,没有检查任何内容。
我该怎么办?
更新1
如果我把:
<input type="checkbox" value="{{item.IsoCode}}" ng-model="models[item.IsoCode]"/> {{item.CultureName}}
然后我总是收到True
而不是object / json。
更新2
我成功完成了添加ng-change
复选框并修改$scope.model.value
值
<input type="checkbox" value="item.IsoCode" ng-change="change()" ng-model="models[item.IsoCode]"/> {{item.CultureName}}
和
$scope.models = {};
$scope.change = function () {
$scope.model.value = $scope.models;
}
然后它有效!
答案 0 :(得分:1)
您的复选框没有可以保存状态的模型,因此Umbraco无需保存。尝试添加ng-model =&#34; model.value&#34; (或其他东西)到你的复选框,看看是否有更多的东西:-)