, 당신은와 앵커를 만들 :이 내가
var vm = function() {
this.season = ko.observable(["A", "B", "C", "D", "E", "F", "G", "H"]);
this.ids = ko.observable(["a", "b", "c", "d", "e", "f", "g", "h"])
}; ko.applyBindings(vm);
는 HTML이 무엇
"형식 오류 $ 루트는 정의되지 않는다"을 #a
, #b
등으로 설정하고 tab-pane
div의 ID를 a
, b
등으로 설정하십시오.
먼저 함수가 아닌 ko.applyBindings
에 객체를 전달해야합니다.
그래서, 당신은 두 번째 객체를
var vm = function() {
this.season = ko.observable(["A", "B", "C", "D", "E", "F", "G", "H"]);
this.ids = ko.observable(["a", "b", "c", "d", "e", "f", "g", "h"])
};
// new vm() creates an object with season and id keys
ko.applyBindings(new vm());
를 만드는 생성자 함수에 new
연산자를 사용하여, 귀하의 경우
var vm = {
season: ko.observable(["A", "B", "C", "D", "E", "F", "G", "H"]),
ids: ko.observable(["a", "b", "c", "d", "e", "f", "g", "h"])
}
ko.applyBindings(vm);
또는
객체 리터럴을 사용할 수 있습니다 모든 href
에 #
으로 관측 할 수있는 ids
이 추가됩니다. 대신 $index
을 사용하여 컨텍스트에서 현재 대문자에 해당하는 작은 글자를 가져올 수 있습니다. $index
은 현재 season
배열 항목의 색인을 나타냅니다. 내가 질문을 따라 잘 모르겠어요
var vm = function() {
this.season = ko.observableArray(["A", "B", "C", "D", "E", "F", "G", "H"]);
this.ids = ko.observable(["a", "b", "c", "d", "e", "f", "g", "h"])
};
ko.applyBindings(new vm());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<ul class="nav nav-tabs" data-bind="foreach: season">
<li>
<a data-toggle="tab" data-bind="text: $data, attr: { href: '#'+$root.ids()[$index()]}"></a>
</li>
</ul>
<div class="tab-content" data-bind="foreach: season">
<div class="tab-pane fade in active" data-bind="attr: { 'id': $root.ids()[$index()]}">
<h3 data-bind="text: $data"></h3>
</div>
</div>
:
$root.ids()[$index()]
여기가 작동 조각이다 : 모두
ids
및$index
이 관찰 가능한이기 때문에이 같은 자신의 가치를 얻기 위해 괄호를 사용할 필요가 ,하지만'applyBindings'에 함수 대신 뷰 - 모델 객체를 제공해야한다고 생각합니다. –