我试图将ng-init的值绑定到json对象的输入。
然而我得到"语法错误:令牌"我哪里错了?
$scope.obj = { init: 'obj.value = obj.value || 20' };
答案 0 :(得分:0)
使用ng-required
代替ng-init
<form name="someformname">
<input type="text" name="someinputname" ng-model="obj.value" ng-required="{{obj.init}}" />
</form>
希望有所帮助:)
答案 1 :(得分:0)
将init视为一个改变obj值的函数。
$scope.obj = {
init: function(){
$scope.obj.value = $scope.obj.value || 20;
}
};
<input type="text" name="someinputname" ng-model="obj.value" ng-init="obj.init()" />
请参阅Plunker
答案 2 :(得分:0)
您可以尝试以下代码:
<强> HTML 强>
<input type="text" name="someinputname" ng-model="obj.value" ng-init="loadObj()" />
<强> JS 强>
$scope.obj = {
value: null
};
$scope.loadObj = function() {
$scope.obj = {
init: {
value: $scope.obj.value | 20
}
};
$scope.obj = $scope.obj.init;
}
答案 3 :(得分:0)
可以这样做:
ng-init="$eval(obj.init)"
ng-init
在内部执行此操作:scope.$eval(attrs.ngInit)
,因此上面的表达式将以这种方式执行:
scope.$eval('$eval(obj.init)')
执行存储在obj.init
。
如评论中所示,简单地删除大括号将不起作用,因为它会导致以下调用:
scope.$eval('obj.init')
只返回obj.init
的值,但 NOT 执行它!