【发布时间】:2016-06-13 11:19:10
【问题描述】:
我正在尝试将 ng-init 的值绑定到来自 json 对象的输入。
但是我得到“语法错误:令牌”我哪里出错了?
$scope.obj = { init: 'obj.value = obj.value || 20' };
【问题讨论】:
-
只需删除大括号。它应该工作
标签: javascript angularjs
我正在尝试将 ng-init 的值绑定到来自 json 对象的输入。
但是我得到“语法错误:令牌”我哪里出错了?
$scope.obj = { init: 'obj.value = obj.value || 20' };
【问题讨论】:
标签: javascript angularjs
使用ng-required 代替ng-init
<form name="someformname">
<input type="text" name="someinputname" ng-model="obj.value" ng-required="{{obj.init}}" />
</form>
希望对你有帮助:)
【讨论】:
将 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()" />
【讨论】:
你可以试试下面的代码:
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;
}
【讨论】:
可以这样:
ng-init="$eval(obj.init)"
ng-init 内部是这样做的:scope.$eval(attrs.ngInit),所以上面的表达式会这样执行:
scope.$eval('$eval(obj.init)')
执行存储在obj.init中的表达式。
按照 cmets 中的建议,简单地删除大括号是行不通的,因为它会导致以下调用:
scope.$eval('obj.init')
它只返回obj.init 的值,但NOT 执行它!
【讨论】: