数字字符串'5'
var num_str = '5';
如何解析Int并让下面的答案同时正确?
{{num_str + 1}} // 6
{{num_str - 1}} // 4
parseInt不能在Angular表达式中使用,
{{parseInt(num_str) - 1}}
数字过滤器不能做加减,
{{num_str - 1 | number}}
如果有人有有用的建议,我将非常感谢你
答案 0 :(得分:85)
在您的控制器中:
$scope.num_str = parseInt(num_str, 10); // parseInt with radix
答案 1 :(得分:77)
我更喜欢使用角度滤镜。
app.filter('num', function() {
return function(input) {
return parseInt(input, 10);
};
});
然后你可以在dom中使用它:
{{'10'|num}}
这是fiddle。
希望这有帮助!
答案 2 :(得分:52)
答案 3 :(得分:22)
另一种选择是:
$scope.parseInt = parseInt;
然后你就可以这样做了:
{{parseInt(num_str)-1}}
这是因为角度表达式无法访问window
,只能访问scope
。
此外,使用数字过滤器,将表达式包装在括号中:
{{(num_str-1) | number}}
答案 4 :(得分:14)
{{ num_str - 0 }}
......对我有用。
答案 5 :(得分:9)
以上都不适合我。
但是这样做了:
{{ (num1_str * 1) + (num2_str * 1) }}
答案 6 :(得分:7)
您可以使用javascript Number方法将其解析为数字
var num=Number (num_str);
答案 7 :(得分:1)
您可以创建管道,并在系统中的任何位置使用它。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
// tslint:disable-next-line:pipe-naming
name: 'toNumber',
pure: false }) export class ToNumberPipe implements PipeTransform {
public transform(items: any): any {
if (!items) {
return 0;
}
return parseInt(items, 10);
} }
在HTML
中{{ attr.text | toNumber }}
请记住在模块文件中声明此Pipe为accessfull。
答案 8 :(得分:0)
除了{{1 * num_str + 1}} 您也可以尝试这样(减去第一个):
{{ num_str - 0 + 1}}
但它非常脆弱,如果num_str包含字母,那么它将失败。因此,最好像@hassassin所说的那样尝试编写过滤器,或者在启动后立即预处理数据。
答案 9 :(得分:0)
我尝试了上面提到的解决方案,但没有一个能为我工作。我使用了JSON.parse,它起作用了:
$http.get('/api/getAdPolling')
.success(function (data) {
console.log('success: ' + data.length);
if (JSON.stringify(data) != "not found") {
$scope.adPoll = JSON.parse(data);
}
})
.error(function (data) {
console.log('Error: ' + data);
});
答案 10 :(得分:0)
并不是很好,但是很有趣: 您可以-而不是+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_scan_qr, container, false);
qrCameraLayout = (LinearLayout) mView.findViewById(R.id.layoutScanner);
scannerView = new ZXingScannerView(getActivity().getApplicationContext());
scannerView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
qrCameraLayout.addView(scannerView);
return mView;
}
@Override
public void onResume() {
super.onResume();
if (scannerView == null){
scannerView = new ZXingScannerView(getActivity().getApplicationContext());
qrCameraLayout.addView(scannerView);
}
scannerView.setResultHandler(getActivity());
scannerView.startCamera();
}
@Override
public void onDestroy() {
super.onDestroy();
scannerView.stopCamera();
}
@Override
public void onPause() {
super.onPause();
scannerView.stopCamera();
}
public void handleResult(Result result) {
String scanResult = result.getText();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity().getApplicationContext());
builder.setTitle("Scan Result");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
scannerView.resumeCameraPreview(getActivity().getApplicationContext());
}
});
builder.setNegativeButton("Cancel",null);
builder.setMessage(scanResult);
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
{{num_str -- 1 }}