在下面的示例中,是否可以忽略下拉列表的脏状态?现在,如果用户更改所选人员,则会变脏.但是我不关心这个字段在我的表单验证中是否很脏.
function TestingCtrl($scope) {
$scope.company = '';
$scope.persons = [{
name: 'Alice'
}, {
name: 'Bob'
}];
$scope.selectedPerson = $scope.persons[0];
$scope.checkForm = function() {
if ($scope.personForm.$dirty) {
alert('Form is dirty');
} else {
alert('Form is clean');
}
}
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>
<div ng-app>
<div ng-controller="TestingCtrl">
<form name="personForm" novalidate>
Company:
<input type="text" ng-model="company" required>
<br>Persons:
<select ng-options="p.name for p in persons" ng-model="selectedPerson"></select>
</form>
<br>
<button ng-click="checkForm()">Check if dirty</button>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
默认情况下,Angular在用户导航到路径时从服务器获取HTML模板.考虑到这一点,想象一下这种情况:
我的假设是Javascript/HTML不同步,对吗?
如果是,是否有与此问题相关的最佳做法?
我想一个解决方案是让Angular在app初始化时获取所有模板.但如果应用程序具有数百个HTML视图,则可能会降低性能.
我基本上想在Google地图中使用这个OpenLayer功能:
new ol.layer.Image({
source: new ol.source.ImageWMS({
url: 'someUrl',
params: {
'LAYERS': 'someLayer',
'SRS': 'EPSG:3857',
'VERSION': '1.1.1'
},
ratio: 1,
})
})
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用Google Maps API实现此功能.这是一些现有的代码,我已经将静态256大小更改为映射高度/宽度.WMS在地图中正确显示,但仍然会提取多个图块.我只想加载一个瓷砖.以下是工作的OpenLayer解决方案和非工作的Google解决方案一起显示的小提琴:https://jsfiddle.net/HoffZ/9zjd4052/
var map = new google.maps.Map(document.getElementById("g-map"), {
zoom: 4,
center: new google.maps.LatLng(40.0, -100.0)
});
// "Normal" 256 tiles
//var TILE_WIDTH = 256;
//var TILE_HEIGHT = 256;
// Set tile size to map size to get just one single tile. But
// still multiple tiles is fetched from server
var TILE_WIDTH = getMapWidth();
var TILE_HEIGHT …Run Code Online (Sandbox Code Playgroud) 当链接没有包含在其他元素中时,我能够改变焦点.
这有效:
HTML
<a id="first" href="#" class='move'>Link</a>
<a href="#" class='move'>Link</a>
<a href="#" class='move'>Link</a>
Run Code Online (Sandbox Code Playgroud)
JS(使用jQuery)
$(document).keydown(
function(e)
{
// Down key
if (e.keyCode == 40) {
$(".move:focus").next().focus();
}
// Up key
if (e.keyCode == 38) {
$(".move:focus").prev().focus();
}
}
);
Run Code Online (Sandbox Code Playgroud)
但是,当链接在列表中时,如何实现相同的功能呢?像这样
<ul>
<li>
<a id="first" href="#" class='move'>Link</a>
</li>
<li>
<a href="#" class='move'>Link</a>
</li>
<li>
<a href="#" class='move'>Link</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我想更改DCEF3(Delphi Chromium Embedded 3)以我的语言挪威语显示本地数据(如时间和日期).现在它默认为英语.
我看到源代码有一个自己的"locales"文件夹(https://code.google.com/p/dcef3/source/browse/#git%2Fbin%2FWin32%2Flocales).如何告诉铬组件使用nb.pak?
当我的Angular控制器初始化时,我需要缓存一些HTML文件.
根据Angular $ templateCache文档,我可以将HTML模板添加到Angular中:
$templateCache.get('templateId.html')
Run Code Online (Sandbox Code Playgroud)
但我不能让这个工作.我试图在控制器内和模块run()函数(Plunker)中获取模板文件.但我可以在网络控制台中看到未提取模板.
app.run(function($templateCache) {
$templateCache.get('templ.html');
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在尝试将Windows(Delphi VCL)中的特殊表/网格表格移植到Angular应用程序.
可以在此处测试角度应用程序的简化版本:jsFiddle演示.
用户可以根据需要添加任意数量的行,如jsFiddle中所示.
问题是:是否可以使用Angular指令或其他一些Angular魔法解决以下问题?
HTML:
<tbody>
<tr ng-repeat="p in persons">
<td>
<input ng-model="p.name">
</td>
<td>
<input ng-model="p.age">
</td>
<td>
<button ng-click="add($index)">Add new person</button>
</td>
</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)
JS:
function TestingCtrl($scope) {
$scope.persons = [{
name: 'Alice',
age: 20
}, {
name: 'Bob',
age: 30
}];
$scope.add = function(index) {
var newPerson = function() {
return {
name: '',
age: ''
};
};
$scope.persons.splice(index + 1, 0, new newPerson());
}
}
Run Code Online (Sandbox Code Playgroud) javascript ×5
angularjs ×4
caching ×1
chromium ×1
delphi ×1
focus ×1
forms ×1
gis ×1
html ×1
jquery ×1
navigation ×1
templates ×1
validation ×1
wms ×1