我很困惑为什么我不能按要求执行此服务调用.该console.log范围内的definitionsService.get承诺,决心是我所期待的(对象我的目标返回).然而在console.log我回来之前正确的defs是undefined哪个,当然是指我的返回值是不确定的.我错过了什么?
function getDefinitions() {
var defs;
definitionsService.get().$promise.then(function(data) {
console.log(data);
defs = data;
console.log(defs);
});
console.log(defs);
return defs;
};
Run Code Online (Sandbox Code Playgroud)
我把上面改为:
function getDefinitions() {
var defs = $q.defer();
definitionsService.get().$promise.then(function(data) {
defs.resovle(data);
});
return defs.promise;
};
Run Code Online (Sandbox Code Playgroud)
根据以下答案.
我也按照相同的答案更改了我调用此方法的方式:
function detail(account) {
getDefinitions().then(function(definitions) {
var key = angular.isDefined(definitions.ABC[account.code]) ? account.code : '-';
return definitions.ABC[key].detail;
});
}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中,我正在尝试执行以下操作:
var getAccounts = function() {
playersService.getAccounts({
playerId: playerId
}).$promise.then(function(accounts) {
for (var i = 0; i < …Run Code Online (Sandbox Code Playgroud) 目前我在Express应用程序中使用控制器来处理路由.当某条路线被击中时,我会打电话给pagesController.showPlayer我index.html.这是控制器:
'use strict';
var path = require('path');
var player = function(req, res) {
res.sendFile(path.join(__dirname, '../assets', 'index.html'));
};
module.exports = {
player: player
};
Run Code Online (Sandbox Code Playgroud)
我还需要发回一个JSON对象,表示请求此路由的用户.但是,当我添加res.json({user: req.user});所有我得到的是这个JSON对象,index.html不再显示.
我的Angular应用程序中有一个搜索功能,当执行时会点击我的API以获取结果然后重定向用户使用$location.url.一切都很好......直到我尝试重新加载结果页面.当我这样做时,我得到一条Cannot GET /search/[search-term]消息.
app.config.js:
'use strict';
angular.module('gameApp')
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/player/:playerId', {
templateUrl: 'player.html'
})
.when('/search/:searchTerm', {
templateUrl: '/app/gmSearchResults/gmSearchResults.html'
});
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
rewriteLinks: false
});
});
Run Code Online (Sandbox Code Playgroud)
相关的navbar.controller.js:
vm.getSearchResults = function(searchTerm) {
searchService.resource.getResults({
query: searchTerm
}).$promise.then(function(results) {
if (results.playerId) {
$location.url('/customer/' + results.playerId);
} else {
saveLatest(results);
$location.url('/search/' + searchTerm);
}
});
};
Run Code Online (Sandbox Code Playgroud) 如何在Angular中正确访问最接近的元素,如下面的jQuery代码,而不使用jQuery?
link: function (scope, element, attrs) {
function handler($event) {
if(!($event.target).closest(element).length) {
scope.$apply(function () {
$parse(attrs.clickOutside)(scope);
});
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像放在我正在研究的基于Angular-Material的应用程序的网格图块中。我的问题是这些图像无法“适合”其图块。下面是一个例子。我的图片很大(2832x4256),并且占据了整个容器,而不是缩放以适合其图块。如何获得可缩放的图像以适合网格中各自的图块?
<md-grid-list md-cols-gt-md="3" md-cols-md="2" md-cols-sm="1" md-gutter="12px" md-row-height="1:1">
<md-grid-tile class="green">
<img src="resources/images/food-beer.jpg" alt="beer">
<md-grid-tile-footer>
<h3>first tile</h3>
</md-grid-tile-footer>
</md-grid-tile>
<md-grid-tile class="blue">
<md-grid-tile-footer>
<h3>second tile</h3>
</md-grid-tile-footer>
</md-grid-tile>
<md-grid-tile class="purple">
<md-grid-tile-footer>
<h3>third tile</h3>
</md-grid-tile-footer>
</md-grid-tile>
</md-grid-list>
Run Code Online (Sandbox Code Playgroud)
结果如下。相反,我的目标是使图像占用与每个蓝色和紫色瓷砖相同的空间。
我在我的节点服务器上运行以下psql:
SELECT json_data.key AS id, json_data.value::int AS version
FROM players.settings, json_each_text(players.settings.value) AS json_data
WHERE name = $1 AND json_data.value::int > 0;
Run Code Online (Sandbox Code Playgroud)
返回的结果包括anonymous每个结果对象之前的字符串:
[ anonymous { id: '1ab56bd6-ef7d-4755-92d5-1b0cf7beb4b7', version: 1 },
anonymous { id: '4ea3d884-d2a6-4074-a094-a45f6003e6d4', version: 1 } ]
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我以前从未见过这个匿名字符串,想要摆脱它.
我试图对我的配置做一些小调整,希望能稍微提高性能.我在这里阅读了Angular文档,他们提到了禁用注释和CSS类指令.我尝试使用我的配置中的以下代码执行此操作,但我一直得到TypeError: $compileProvider.commentDirectivesEnabled is not a function或TypeError: $compileProvider.cssClassDirectivesEnabled is not a function错误.
注意:我正在运行Angular 1.4.9
'use strict';
angular.module('app')
.config(compilationConfig)
;
compilationConfig.$inject = ['$compileProvider'];
function compilationConfig($compileProvider) {
$compileProvider.debugInfoEnabled(false);
$compileProvider.commentDirectivesEnabled(false);
$compileProvider.cssClassDirectivesEnabled(false);
}
Run Code Online (Sandbox Code Playgroud) 我构建了一个非常基本的 UNION 查询,以确定传递到我的查询中的 UUID 的“类型”,如下所示:
(
SELECT
CASE WHEN id IS NOT NULL THEN 'player_id' ELSE '' END AS uuid_type
FROM db.players
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS NOT NULL THEN 'game_id' ELSE '' END AS uuid_type
FROM db.games
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS NOT NULL THEN 'location_id' ELSE '' END AS uuid_type
FROM db.locations
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS …Run Code Online (Sandbox Code Playgroud) 我正在使用$rootScope.$emit()并$rootScope.$on()在我的Angular应用程序中广播和监听状态更改.
在某些情况下,多个控制器都可以发出和侦听相同的事件.如果我在同一个控制器中有以下代码,那么这个控制器.$on在发出事件时运行它的代码,或者该事件只向其他控制器广播?
$rootScope.$emit('adminChanged');
...
$rootScope.$on('adminChanged', function() {
getCustomerInfo();
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试mousesenter使用以下代码放大事件上的 svg 组元素。相反,此代码会放大该组内的图像(导致类似“缩放”的效果)。当我改变时什么images.on('mouseenter'...也nodeEneter.on('mouseenter...没有发生。我的完整示例可以在这里找到:http ://blockbuilder.org/MattDionis/7f5375d927698f508a01
var node = vis.selectAll('g.node')
.data(nodes, function(d) {
return d.id;
});
var nodeEnter = node.enter().append('svg:g')
.attr('class', 'node')
.attr('transform', function(d) {
return "translate(" + d.x + "," + d.y + ")";
})
.attr('filter', 'url(#drop-shadow)')
.on('click', click)
.call(force.drag);
var images = nodeEnter.append('svg:image')
.attr('xlink:href', function(d) {
return d.img;
})
.attr('x', function(d) {
return -25;
})
.attr('y', function(d) {
return -25;
})
.attr('height', 50)
.attr('width', 50)
.attr('clip-path', 'url(#clip-circle)');
var setEvents = images
.on('mouseenter', function() …Run Code Online (Sandbox Code Playgroud) javascript ×7
angularjs ×6
node.js ×3
postgresql ×2
sql ×2
css ×1
d3.js ×1
express ×1
html ×1
svg ×1