我有一个包含元素名称的输入字符串(我的意思是“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']的元素
答案 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>