我的Vuex商店包含各种复杂性的对象.有些具有嵌套对象,有些具有嵌套对象数组.
我可以创建泛型函数来改变指定的属性:
setProperty(state,{ type, id, prop, value })
{
state[type][id][prop] = value;
}
Run Code Online (Sandbox Code Playgroud)
但是对于嵌套对象,对象数组而言,这将很快变得复杂.必须为每个对象属性(嵌套或其他)创建变异似乎非常繁琐.
创建突变以修改对象,嵌套对象,数组等的最佳实践是什么?
另一个相关的问题是,将对象传递到突变中是不好的形式,而不是在状态中查找它们:
setProperty(state,{ obj, prop, value })
{
obj[prop] = value;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ng-disabled有条件地启用/禁用我的保存按钮:
<button type="button" title="Save Changes" ng-click="onSaveChanges()"
ng-disabled="{{!data.modified}}">
Save
</button>
Run Code Online (Sandbox Code Playgroud)
我有一个$ scope.data.modified变量,当我的数据被修改时,该变量变为true.无论是真还是假,都会启用"保存"按钮.元素检查显示ng-disabled的值按预期在"true"和"false"之间切换,但按钮始终处于启用状态.
我创建了一个简单的Angular JS $ routeProvider解析测试应用程序.它给出以下错误:
Error: Unknown provider: dataProvider <- data
Run Code Online (Sandbox Code Playgroud)
如果有人能够确定我哪里出错了,我将不胜感激.
的index.html
<!DOCTYPE html>
<html ng-app="ResolveTest">
<head>
<title>Resolve Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"> </script>
<script src="ResolveTest.js"></script>
</head>
<body ng-controller="ResolveCtrl">
<div ng-view></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
ResolveTest.js
var rt = angular.module("ResolveTest",[]);
rt.config(["$routeProvider",function($routeProvider)
{
$routeProvider.when("/",{
templateUrl: "rt.html",
controller: "ResolveCtrl",
resolve: {
data: ["$q","$timeout",function($q,$timeout)
{
var deferred = $q.defer();
$timeout(function()
{
deferred.resolve("my data value");
},2000);
return deferred.promise;
}]
}
});
}]);
rt.controller("ResolveCtrl",["$scope","data",function($scope,data)
{
console.log("data : " + data);
$scope.data = data;
}]);
Run Code Online (Sandbox Code Playgroud)
rt.html
<span>{{data}}</span>
Run Code Online (Sandbox Code Playgroud) angularjs angularjs-directive angularjs-service angularjs-routing angularjs-controller
在列定义中包含cellTemplate时,如果该cellTemplate包含CUSTOM_FILTERS,则会导致angular to puke:
错误:语法错误:令牌'CUSTOM_FILTERS'是表达式[row.entity.1 CUSTOM_FILTERS]第14列的一个意外标记,从[CUSTOM_FILTERS]开始
即使在列def中使用默认的cellTemplate也会导致相同的错误.
cellTemplate = "<div class=\"ngCellText\" ng-class=\"col.colIndex()\"><span ng-cell-text>{{COL_FIELD CUSTOM_FILTERS}}</span></div>"
Run Code Online (Sandbox Code Playgroud) 我有nginx配置代理如下的websockets:
location /socket.io {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Run Code Online (Sandbox Code Playgroud)
}
客户端连接正常,但是当服务器发出通知时:
io.sockets.emit("update",data);
Run Code Online (Sandbox Code Playgroud)
客户永远不会收到它:
var socket = io.connect("http://" + hostip + "/socket.io");
socket.on("update",function(data)
{
console.log("got update: " + data);
});
Run Code Online (Sandbox Code Playgroud)
如果我绕过nginx,一切都按预期工作:
var socket = io.connect("http://" + hostip + ":8000");
socket.on("update",function(data)
{
console.log("got update: " + data);
});
Run Code Online (Sandbox Code Playgroud)
我错过了什么?顺便说一句,为什么不绕过nginx单一来源策略违规?谢谢.
我正在尝试使用 FOR XML PATH 从 MS SQL Server 2012 获取所需的输出。
我的查询基本上是这样的:
select field1 as fields, field2 as fields, field3 as fields
from mytable
for xml path
Run Code Online (Sandbox Code Playgroud)
产生这个 xml: (对于 fieldN 列中的值 0,3,7)
<row>
<fields>037</fields>
</row>
Run Code Online (Sandbox Code Playgroud)
我想要的输出是这样的:
<row>
<fields>0</fields>
<fields>3</fields>
<fields>7</fields>
</row>
Run Code Online (Sandbox Code Playgroud)
这可能吗?