如果在Umbraco中使用自定义属性编辑器,则不会保存数据

时间:2017-06-07 06:44:48

标签: c# angular umbraco

我创建自定义属性编辑器,它使用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部分创建了新数据类型,并将其添加到文档类型中:

enter image description here

当我保存文档时,该属性的值为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;
}

然后它有效!

1 个答案:

答案 0 :(得分:1)

您的复选框没有可以保存状态的模型,因此Umbraco无需保存。尝试添加ng-model =&#34; model.value&#34; (或其他东西)到你的复选框,看看是否有更多的东西:-)