我在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中无法正确呈现。我需要采取哪些不同的措施来实现这一目标吗?
答案 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可以自动设置正确的类型。