从json对象添加ng-init代码

时间:2016-06-13 11:19:10

标签: javascript angularjs

我试图将ng-init的值绑定到json对象的输入。

然而我得到"语法错误:令牌"我哪里错了?

$scope.obj = { init: 'obj.value = obj.value || 20' };

Plnkr:http://plnkr.co/edit/nmaxLvbqijXPBKoaQTUQ?p=preview

4 个答案:

答案 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)"

PLUNK

ng-init在内部执行此操作:scope.$eval(attrs.ngInit),因此上面的表达式将以这种方式执行:

scope.$eval('$eval(obj.init)')

执行存储在obj.init

中的表达式

如评论中所示,简单地删除大括号将不起作用,因为它会导致以下调用:

scope.$eval('obj.init')

只返回obj.init的值,但 NOT 执行它!