共享我有以下的HTML
<section class="result" ng-repeat="record in results | orderBy: sortRecordByTimestamp" ng-init="highlights(record)" ng-class="level">
<!-- some stuff -->
</section>
我的範圍有$scope.level = ''
上初始化。功能:
function highlights(record) {
// will contain more logic
console.log('Highlighting...');
level(record);
}
和
function level(record) {
$scope.spreadsheet.forEach(function(row) {
if (row.Name.indexOf(record.event) > -1) {
$scope.level = 'level' + row.Level;
}
});
}
它正確地設置$scope.level
像它應該,但是,它在我所有的成果共享。
是不是ng-repeat
創建子範圍,原語被覆蓋?
編輯:
改變了HTML:
<section class="result" ng-repeat="record in results | orderBy: sortRecordByTimestamp" ng-class="level(record)">
<!-- code -->
</section>
和JS:
$scope.level = function(record) {
$scope.spreadsheet.forEach(function(row) {
if (row.Name.indexOf(record.event) > -1) {
console.log('Highlighting: level' + row.Level);
return 'level' + row.Level;
}
});
}
據登錄正確的價值觀,但是,NG-類是從未設置。爲什麼?
編輯2:
爲了澄清什麼,我試圖做的:
$scope.spreadsheet
包含的數據來比較record
數據。匹配可以在3個實例中找到,每個實例都在row.Level
中列舉,具體取決於row.Name
。所以level(record)
返回一個css類級別1,級別2或級別3。
這些有一個background: /* color */
屬性設置給他們。因此,在row.Name
中找到的每行record.event
(它們不完全匹配,這就是爲什麼沒有===
)根據給定的重要程度進行着色。
我第一次試圖讓孩子作用域繼承$scope.level
財產,並確定它的元素創建(這就是爲什麼ng-init
),然後我做了$scope.level
返回水平的功能。但是,它會在所有記錄上觸發最後一次迭代的結果。
我該如何確定每個記錄的單獨級別?
這不是真的使用'ng-init'的正確方法。 'ng-init'的目的是爲'$ first','$ last','$ index'等特殊的'ng-repeat'屬性創建一個**別名**。*不是* for建立變量或運行一個函數。 https://docs.angularjs.org/api/ng/directive/ngInit – Claies
我知道,我試圖想出一個不同的解決方案,這個問題之前...檢查編輯,似乎整潔,但是,不起作用 – Idefixx
你究竟想要完成什麼?通過更全面地瞭解您的問題,幫助您找到可行的解決方案會容易得多。什麼是'級別'CSS類,你期待什麼結果? – Claies