我有几个特定指令的实例:
<type="text" my-directive ng-model="formData.property1">
<type="text" my-directive ng-model="formData.property2">
formData.propery是一个像{ name: '', code: '' }
这样的对象。 formData.propery.name
用于视图层,formData.propery.code
作为值发送到服务器。
我想从URL参数初始化这些指令 - 传递代码并将整个对象作为模型值。
这里的困难是:
我不能在指令范围内调用函数来从服务器获取具有特定代码的对象,因为它违反了父范围和指令范围的关注点分离。
由于$ http请求的异步调用类型,我无法从父作用域初始化模型。
我不能在指令中使用特定的init函数,它通过模型变量名从服务器获取对象,因为它有点尴尬并且使代码混乱。
那么这样做的正确方法是什么?
示例1:
getObj1 = (code)->
$http({
url: '/api/service/GetByCode'
method: 'POST'
data: { code: code }
headers: {'Content-Type': 'application/json; charset=utf-8'}
})
.success((data)->
$scope.formData.property1 = angular.fromJson(data.result)
)
getObj2 = (code)->
$http({
url: '/api/service/GetByCode'
method: 'POST'
data: { code: code }
headers: {'Content-Type': 'application/json; charset=utf-8'}
})
.success((data)->
$scope.formData.property2 = angular.fromJson(data.result)
)
答案 0 :(得分:0)
好吧,我只需要传递属性以使用闭包作为参数赋值:
getObj = (code, prop)->
theProp = prop
$http({
url: '/api/service/GetByCode'
method: 'POST'
data: { code: code }
headers: {'Content-Type': 'application/json; charset=utf-8'}
})
.success((data)->
theProp = angular.fromJson(data.result)
)
然后像这样调用它:
getObj(someCode1, scope.formData.property1)
getObj(someCode2, scope.formData.property2)