我正在使用MVC框架和knockout js组合。淘汰js我有点新鲜。我需要通过嵌套的淘汰模板中的API调用动态绑定数据。我没有找到任何关于如何做到这一点的方法。
我的嵌套模板是:
enter code here
<div data-bind="template: {name: 'ListTemplate', foreach: Data}">
</div>
<script type="text/html" id="ListTemplate">
<h3>
Contributions (${ Count })
</h3>
<img src=" ${ Image } " />
<p>
<span> ${ Name } </span>
<div data-bind="template: {name: 'goalsTemplate', foreach: goals}"></div>
</p>
</script>
<script type="text/html" id="goalsTemplate">
Goal:
<a href="#"> ${ Goals } </a> Ends on
<code> ${ Date } </code>
</script>
我的viewModel是:
var viewModel = {(
Data: ko.observableArray([]),
goals: ko.observableArray([])
});
function userData(Count, Image, Name) {
return {
Count: ko.observable(Count),
Image: ko.observable(Image),
Name: ko.observable(Name)
};
}
function goalDetail(Goals, Date) {
return {
Goals: ko.observable(Goals),
Date: ko.observable(Date)
};
}
$(document).ready(function() {
$.ajax({
type: "GET",
url: siteBaseUrl + 'api/Detail',
dataType: 'json',
success: function (data) {
$(data).each(function (index, type) {
viewModel.Data.push(new userData(..,..,..));
});
},
error: function (xhr, ajaxOptions, thrownError) {
alert('error status code:' + xhr.status);
alert('error message:' + thrownError);
alert('error details:' + xhr.responseText);
}
});
});
如何通过数据数组中的函数(goalDetail)绑定目标数组中的数据?
答案 0 :(得分:2)
根据我的理解,目标和数据是主viewModel的一部分,你想在Foreach绑定中使用Parent Viewmodel,在这种情况下,你需要的是$ parent,如下所示
<div data-bind="template: {name: 'goalsTemplate', foreach: $parent.goals}">