在ng模型中检索角度表达式

时间:2015-09-04 19:49:30

标签: angularjs

我试图从ng-init内容中检索角度表达式,但它似乎不起作用且ng-model为null。这是我的代码。

  <input type="text" class="form-control" ng-model="user.role"
    ng-init="user.role={{user.lastname}}-{{state | limitTo:2}}-{{ city| limitTo:2}}"
                           disabled>

注意:从下拉列表中选择州和城市,我只想采取前2个字符。

当我删除{{}}时,它没有按预期工作,因为我只获得了所有表达式的前2个字符。 我应该拥有什么: Turner-US-NY ,但我得到的是: Tu

任何有效的解决方案?感谢

1 个答案:

答案 0 :(得分:0)

将所有评论合并到一个答案中:

  1. 使用ng-change重新计算user.roleng-init将无法满足您的需求。
  2. 考虑在控制器中使用函数而不是表达式
  3. 所以,最终的结果是这样的:

    <select ng-model="state" ng-options="..."
            ng-change="recalcUserRole()">
    
    <select ng-model="city" ng-options="..."
            ng-change="recalcUserRole()">
    
    <input ng-model="user.role">
    
    $scope.recalcUserRole = function(){
      $scope.user.role = $scope.user.lastname + '-' 
                       + $scope.state.substring(0,2) + '-'
                       + $scope.city.substring(0,2);
    }
    

    如果您坚持在视图中使用表达式,那么可以这样做:

    <select ng-model="state" ng-options="..."
        ng-change="user.role = user.lastname+'-'+state.substring(0,2)+'-'+city.substring(0,2)">