2016-07-25 12 views
0

私はUmbraco 7.4.3で簡単な入力番号のカスタムデータ型を持っています。これは、ng-bind属性を使用してモデルにバインドされていますが、テキストボックスは値を表示しません。Umbraco番号入力が値を表示していないカスタムデータタイプ

NumberTestInput.Editor.html

<div ng-controller="NumberTestInput.NumberTestInputController"> 
    <!--Changing the type to 'text' causes the value to render correctly--> 
    <!--Otherwise, it renders with an empty value--> 
    <input type="number" ng-model="model.value" /> 
</div> 

NumberTestInput.Controller.js

angular.module("umbraco").controller("NumberTestInput.NumberTestInputController", function ($scope) { 

    //Causes value to load on page load, but textbox is blanked out again after publishing 
    //$scope.model.value = parseInt($scope.model.value); 

}); 

package.manifest

{ 
    "propertyEditors": [ 
    { 
     "name": "Number Test Input", 
     "alias": "numberTestInput", 
     "editor": { 
     "hideLabel": false, 
     "isReadOnly": false, 
     "valueType": "INT", 
     "view": "~/App_Plugins/NumberTestInput/NumberTestInput.Editor.html" 
     } 
    } 
    ], 
    "javascript": [ 
    "~/App_Plugins/NumberTestInput/NumberTestInput.Controller.js" 
    ] 
} 

数値ではなく文字列に設定されているモデル値型の問題のようですが、マニフェストでこの設定をINTとして取得していて、入力時に値が正しく保存されています。 UIで正しく表示されないということだけです。この仕事をするために何か必要なことはありますか?

+0

実際には 'model.value'の値は何ですか? – developer033

+0

@developer033数値です。値そのものは、テキストボックスの種類を「番号」から「テキスト」に変更することによって、正しく格納されています。 – Mun

答えて

0

model.valueをラップする新しいプロパティを作成し、整数を返すように強制するハックが見つかりました。

の追加は、コントローラに

Object.defineProperty(
    $scope, 
    "modelValue", 
    { 
     get: function() { return parseInt($scope.model.value); }, 
     set: function(newValue) { $scope.model.value = newValue; } 
    }); 

番号入力欄が今model.valueの値を返す新しいmodelValueプロパティにバインドされ

<input type="number" ng-model="modelValue" /> 

見ます整数として。

これはハックのように感じますが、うまくいけばUmbracoが正しいタイプを自動的に設定できるより良い方法があります。

関連する問題