Angular.js - 元素的搜索范围

时间:2012-12-14 12:10:40

标签: angularjs

我有一个包含元素名称的输入字符串(我的意思是“name”属性)。 如何在$ 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语句并搜索名为== attrs ['bindslave']的元素

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我仍然不确定你要完成什么,但为什么不用这样的东西替换你的开关:

scope[attrs.bindslave] = viewValue

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

<select bindslave="order.shipping_state" ... ></select>