0

我有一个包含元素名称的输入字符串(我的意思是“名称”属性)。如何在 $scope 中搜索具有给定名称的元素?

我想做的是制定一个参数化指令

<select bindslave="shipping_state" name="billing_state" ng-model="order.billing_state" ng-options="i.name for i in billingRegions" value="{{ order.billing_state.id }}"></select>
<select name="shipping_state" ng-model="order.shipping_state" ng-options="i.name for i in shippingRegions" value="{{ order.shipping_state.id }}"></select>

目前,CoffeeScript 中的代码如下所示:

app_directives.directive "bindslave", ->
  require: "ngModel"
  link: (scope, element, attrs, ctrl) ->
    ctrl.$parsers.unshift (viewValue) ->
      if scope.sameAsBilling
        switch attrs['bindslave']
          when "shipping_state"
            scope.order.shipping_state = viewValue
          when "shipping_country"
            scope.order.shipping_country = viewValue
      viewValue

我想摆脱 switch 语句并搜索具有 name==attrs['bindslave'] 的元素

4

2 回答 2

2

如何在 $scope 中搜索具有给定名称的元素?

给你的表单一个名字,然后 Angular 会以给定的名字将 FormController 发布到当前范围。如果您的表单元素有名称,它们也可用:

<form name="myForm" novalidate>
<select bindslave="shipping_state" name="billing_state" ...>
<select name="shipping_state" ...> 

然后您可以访问有关表单元素的信息:

console.log($scope.myForm.billing_state, $scope.myForm.shipping_state);
于 2012-12-16T04:23:15.453 回答
0

我仍然不确定您要完成什么,但是您为什么不将开关替换为以下内容:

scope[attrs.bindslave] = viewValue

然后在 HTML 上使用正确的引用:

<select bindslave="order.shipping_state" ... ></select>
于 2012-12-14T12:28:32.463 回答