Umbraco自定义数据类型,数字输入未显示值

时间:2016-07-25 03:34:22

标签: angularjs binding model umbraco

我在Umbraco 7.4.3中有一个自定义数据类型,其输入类型为 number 。这与使用 ng-bind 属性的模型绑定,但文本框不会呈现值。

NumberTestInput.Editor.html

state

NumberTestInput.Controller.js

<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>

package.manifest

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);

});

看起来模型值类型设置为字符串而不是数字的问题,尽管我在清单中将此设置作为INT,并且在输入时正确保存值。它只是在UI中无法正确呈现。我需要采取哪些不同的措施来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

通过创建一个新属性来包装 model.value 并强制它返回一个整数,找到了解决此问题的方法。

添加到控制器

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

查看

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

数字输入字段现在绑定到新的 modelValue 属性,该属性将 model.value 的值作为整数返回。

这确实感觉像是一个黑客,并希望有一个更好的方法来做到这一点,Umbraco可以自动设置正确的类型。